Regular expression exclude some words but match to one
up vote
0
down vote
favorite
Is it possible to write a regex which is matching to "findme" but doesn't match if the line contains "black" or "red" or "yellow" words?
Possible regex: (?!black|red|yellow)findme
excluded words: yellow , black , red
Test lines:
findme (OK)
xyz (NOT!)
XYZfindmeXYZ (OK)
somethingelseFINDMEsome_thingelse (OK)
BLACK_ findme (NOT !)
BLACK findme (NOT !)
XyBlacK findme xyz_xy (NOT !)
xy findme RED (NOT !)
yellow__ findme _xy (NOT !)
_xy_ findme _something (OK)
regex regex-negation regex-lookarounds
add a comment |
up vote
0
down vote
favorite
Is it possible to write a regex which is matching to "findme" but doesn't match if the line contains "black" or "red" or "yellow" words?
Possible regex: (?!black|red|yellow)findme
excluded words: yellow , black , red
Test lines:
findme (OK)
xyz (NOT!)
XYZfindmeXYZ (OK)
somethingelseFINDMEsome_thingelse (OK)
BLACK_ findme (NOT !)
BLACK findme (NOT !)
XyBlacK findme xyz_xy (NOT !)
xy findme RED (NOT !)
yellow__ findme _xy (NOT !)
_xy_ findme _something (OK)
regex regex-negation regex-lookarounds
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Is it possible to write a regex which is matching to "findme" but doesn't match if the line contains "black" or "red" or "yellow" words?
Possible regex: (?!black|red|yellow)findme
excluded words: yellow , black , red
Test lines:
findme (OK)
xyz (NOT!)
XYZfindmeXYZ (OK)
somethingelseFINDMEsome_thingelse (OK)
BLACK_ findme (NOT !)
BLACK findme (NOT !)
XyBlacK findme xyz_xy (NOT !)
xy findme RED (NOT !)
yellow__ findme _xy (NOT !)
_xy_ findme _something (OK)
regex regex-negation regex-lookarounds
Is it possible to write a regex which is matching to "findme" but doesn't match if the line contains "black" or "red" or "yellow" words?
Possible regex: (?!black|red|yellow)findme
excluded words: yellow , black , red
Test lines:
findme (OK)
xyz (NOT!)
XYZfindmeXYZ (OK)
somethingelseFINDMEsome_thingelse (OK)
BLACK_ findme (NOT !)
BLACK findme (NOT !)
XyBlacK findme xyz_xy (NOT !)
xy findme RED (NOT !)
yellow__ findme _xy (NOT !)
_xy_ findme _something (OK)
regex regex-negation regex-lookarounds
regex regex-negation regex-lookarounds
asked Nov 9 at 16:16
user2287094
358
358
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21
add a comment |
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
You can use the following regex:
^(?!.*(?:black|red|yellow)).*(findme)
Demo: https://regexr.com/42r4q
Details:
^
- matches start of the string
(?!)
- negative lookahead
.*
- Match any character (except newlines) 0+ times
(?:)
- non-capturing group
black|red|yellow
- matches 'black', 'red' or 'yellow'
findme
- matches 'findme' string
Flags:
g
- global
i
- case-insensitive
m
- multiline
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
add a comment |
up vote
0
down vote
Use a negative look ahead, anchored to start, for the unwanted terms:
^(?i)(?!.*(black|red|yellow)).*findme
See live demo passing all your tests.
(?i)
means “ignore case"(?!...)
is a negative look ahead (asserts without consuming that the expression is not found)
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
You can use the following regex:
^(?!.*(?:black|red|yellow)).*(findme)
Demo: https://regexr.com/42r4q
Details:
^
- matches start of the string
(?!)
- negative lookahead
.*
- Match any character (except newlines) 0+ times
(?:)
- non-capturing group
black|red|yellow
- matches 'black', 'red' or 'yellow'
findme
- matches 'findme' string
Flags:
g
- global
i
- case-insensitive
m
- multiline
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
add a comment |
up vote
1
down vote
You can use the following regex:
^(?!.*(?:black|red|yellow)).*(findme)
Demo: https://regexr.com/42r4q
Details:
^
- matches start of the string
(?!)
- negative lookahead
.*
- Match any character (except newlines) 0+ times
(?:)
- non-capturing group
black|red|yellow
- matches 'black', 'red' or 'yellow'
findme
- matches 'findme' string
Flags:
g
- global
i
- case-insensitive
m
- multiline
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
add a comment |
up vote
1
down vote
up vote
1
down vote
You can use the following regex:
^(?!.*(?:black|red|yellow)).*(findme)
Demo: https://regexr.com/42r4q
Details:
^
- matches start of the string
(?!)
- negative lookahead
.*
- Match any character (except newlines) 0+ times
(?:)
- non-capturing group
black|red|yellow
- matches 'black', 'red' or 'yellow'
findme
- matches 'findme' string
Flags:
g
- global
i
- case-insensitive
m
- multiline
You can use the following regex:
^(?!.*(?:black|red|yellow)).*(findme)
Demo: https://regexr.com/42r4q
Details:
^
- matches start of the string
(?!)
- negative lookahead
.*
- Match any character (except newlines) 0+ times
(?:)
- non-capturing group
black|red|yellow
- matches 'black', 'red' or 'yellow'
findme
- matches 'findme' string
Flags:
g
- global
i
- case-insensitive
m
- multiline
edited Nov 9 at 18:26
answered Nov 9 at 16:23
rv7
1,6361322
1,6361322
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
add a comment |
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
1
1
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
You don’t need the trailing look ahead. The first look ahead covers the entire input.
– Bohemian♦
Nov 9 at 18:07
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
Aha! thanks. I just noticed the fact.
– rv7
Nov 9 at 18:12
add a comment |
up vote
0
down vote
Use a negative look ahead, anchored to start, for the unwanted terms:
^(?i)(?!.*(black|red|yellow)).*findme
See live demo passing all your tests.
(?i)
means “ignore case"(?!...)
is a negative look ahead (asserts without consuming that the expression is not found)
add a comment |
up vote
0
down vote
Use a negative look ahead, anchored to start, for the unwanted terms:
^(?i)(?!.*(black|red|yellow)).*findme
See live demo passing all your tests.
(?i)
means “ignore case"(?!...)
is a negative look ahead (asserts without consuming that the expression is not found)
add a comment |
up vote
0
down vote
up vote
0
down vote
Use a negative look ahead, anchored to start, for the unwanted terms:
^(?i)(?!.*(black|red|yellow)).*findme
See live demo passing all your tests.
(?i)
means “ignore case"(?!...)
is a negative look ahead (asserts without consuming that the expression is not found)
Use a negative look ahead, anchored to start, for the unwanted terms:
^(?i)(?!.*(black|red|yellow)).*findme
See live demo passing all your tests.
(?i)
means “ignore case"(?!...)
is a negative look ahead (asserts without consuming that the expression is not found)
edited Nov 9 at 18:16
answered Nov 9 at 18:10
Bohemian♦
291k61410547
291k61410547
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
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53229463%2fregular-expression-exclude-some-words-but-match-to-one%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
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
Required, but never shown
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
Required, but never shown
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
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
In what context? What language are you working with? What are you trying to achieve?
– Andy Lester
Nov 9 at 18:21