Reputation: 67213
What is the regex for simply checking if a string contains a certain word (e.g. 'Test')? I've done some googling but can't get a straight example of such a regex. This is for a build script but has no bearing to any particular programming language.
Upvotes: 210
Views: 1016990
Reputation: 10562
For Java use this: ^.*Test.*$
.
It reads as: The string begins (^
) then any character (.
) can be repeated zero or more times (*
) then Test
and then again any character (.
) repeated zero or more times (*
) and the string ends ($
).
Upvotes: 12
Reputation: 3387
Depending on your flavor of regular expression - the exact details of regex capabilities vary depending on the language.
I will give javascript examples.
If you don't care about null safety...
str = "blah"
str.match(/a/)
// [ 'a', index: 2, input: 'blah', groups: undefined ]
Case-sensitive
/test/.test("does this string contain the word testtesttest")
// true
Case-insensitive
/test/i.test("Test")
Case-insensitive, ANY word
/\b\w+\b/i.test("bLAH")
// true
Upvotes: 3
Reputation: 54989
Assuming regular PCRE-style regex flavors:
If you want to check for it as a single, full word, it's \bTest\b
, with appropriate flags for case insensitivity if desired and delimiters for your programming language. \b
represents a "word boundary", that is, a point between characters where a word can be considered to start or end. For example, since spaces are used to separate words, there will be a word boundary on either side of a space.
If you want to check for it as part of the word, it's just Test
, again with appropriate flags for case insensitivity. Note that usually, dedicated "substring" methods tend to be faster in this case, because it removes the overhead of parsing the regex.
Upvotes: 106
Reputation: 46183
Just don't anchor your pattern:
/Test/
The above regex will check for the literal string "Test" being found somewhere within it.
Upvotes: 194