Regex to find match any combination of 3 terms

Multi tool use
up vote
-1
down vote
favorite
I need to design a regex which will match any combination of n words, without duplicates.
E.g. the regex for the words "she"
"is"
"happy"
would match "she is happy"
, "happy she is"
but not "she is is happy"
or "she is"
.
Can I do this with Regex for should I use a custom algorithm?
regex
add a comment |
up vote
-1
down vote
favorite
I need to design a regex which will match any combination of n words, without duplicates.
E.g. the regex for the words "she"
"is"
"happy"
would match "she is happy"
, "happy she is"
but not "she is is happy"
or "she is"
.
Can I do this with Regex for should I use a custom algorithm?
regex
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10
add a comment |
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
I need to design a regex which will match any combination of n words, without duplicates.
E.g. the regex for the words "she"
"is"
"happy"
would match "she is happy"
, "happy she is"
but not "she is is happy"
or "she is"
.
Can I do this with Regex for should I use a custom algorithm?
regex
I need to design a regex which will match any combination of n words, without duplicates.
E.g. the regex for the words "she"
"is"
"happy"
would match "she is happy"
, "happy she is"
but not "she is is happy"
or "she is"
.
Can I do this with Regex for should I use a custom algorithm?
regex
regex
edited Nov 10 at 15:06
Wai Ha Lee
5,630123660
5,630123660
asked Nov 10 at 15:02
Mark Micallef
5162721
5162721
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10
add a comment |
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
This match she is happy
in any order but not duplicate word:
^(?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)(?=(?:(?!bisb).)*bisb(?:(?!bisb).)*$)(?=(?:(?!bhappyb).)*bhappyb(?:(?!bhappyb).)*$).*$
DEMO
Let's explain the first part (i.e. (?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)
)
This make sure we have one and only one "she" anywhere in the phrase.
(?= # start lookahead
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
bsheb # literally "she" surounded by word boundaries
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
$
)
Same explanation for the other words "is" and "happy".
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
This match she is happy
in any order but not duplicate word:
^(?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)(?=(?:(?!bisb).)*bisb(?:(?!bisb).)*$)(?=(?:(?!bhappyb).)*bhappyb(?:(?!bhappyb).)*$).*$
DEMO
Let's explain the first part (i.e. (?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)
)
This make sure we have one and only one "she" anywhere in the phrase.
(?= # start lookahead
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
bsheb # literally "she" surounded by word boundaries
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
$
)
Same explanation for the other words "is" and "happy".
add a comment |
up vote
2
down vote
This match she is happy
in any order but not duplicate word:
^(?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)(?=(?:(?!bisb).)*bisb(?:(?!bisb).)*$)(?=(?:(?!bhappyb).)*bhappyb(?:(?!bhappyb).)*$).*$
DEMO
Let's explain the first part (i.e. (?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)
)
This make sure we have one and only one "she" anywhere in the phrase.
(?= # start lookahead
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
bsheb # literally "she" surounded by word boundaries
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
$
)
Same explanation for the other words "is" and "happy".
add a comment |
up vote
2
down vote
up vote
2
down vote
This match she is happy
in any order but not duplicate word:
^(?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)(?=(?:(?!bisb).)*bisb(?:(?!bisb).)*$)(?=(?:(?!bhappyb).)*bhappyb(?:(?!bhappyb).)*$).*$
DEMO
Let's explain the first part (i.e. (?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)
)
This make sure we have one and only one "she" anywhere in the phrase.
(?= # start lookahead
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
bsheb # literally "she" surounded by word boundaries
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
$
)
Same explanation for the other words "is" and "happy".
This match she is happy
in any order but not duplicate word:
^(?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)(?=(?:(?!bisb).)*bisb(?:(?!bisb).)*$)(?=(?:(?!bhappyb).)*bhappyb(?:(?!bhappyb).)*$).*$
DEMO
Let's explain the first part (i.e. (?=(?:(?!bsheb).)*bsheb(?:(?!bsheb).)*$)
)
This make sure we have one and only one "she" anywhere in the phrase.
(?= # start lookahead
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
bsheb # literally "she" surounded by word boundaries
(?: # non capture group
(?!bsheb) # negative lookahead, make sure we don't have "she"
. # any character
)* # end group, may appear 0 or more times
$
)
Same explanation for the other words "is" and "happy".
answered Nov 10 at 16:04


Toto
63.8k175697
63.8k175697
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53240208%2fregex-to-find-match-any-combination-of-3-terms%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Gz gnG vhFpn xOj455feFBlX 19sd7M1s1RrY9sqD,P VznghtA7i7wFzkSGQ2rj6i
Does it have to be done with RegEx?
– Wai Ha Lee
Nov 10 at 15:07
I too agree with @WaiHaLee, It is simply getting the list of words for the input text and checking if the list contains all required terms
– Infamous
Nov 10 at 15:08
No it doesn't. I just figured a regex engine is likely to be more efficient than whatever I write. My fallback is to do it myself.
– Mark Micallef
Nov 10 at 15:10