GurdeepS
GurdeepS

Reputation: 67213

Regex for string contains?

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

Answers (5)

ACV
ACV

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

Kimball Robinson
Kimball Robinson

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

user2747691
user2747691

Reputation: 163

I'm a few years late, but why not this?

[Tt][Ee][Ss][Tt]

Upvotes: -31

Michael Madsen
Michael Madsen

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

Platinum Azure
Platinum Azure

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

Related Questions