I'm trying to figure out a regex which yields any string between single quotes ('), IF that string contains a given word.
For example, assume I have the following text, and I want to match everything between single quotes that contains the word "test":
Some sample text,
'this is test a match' and
'this is not a match' but
'this is a match again because it contains the word test'.
This "is not a test match because its double quotes".
And this is not a test match either because this is not encapsulated in quotes.
The regex would need to return two matches, namely
"this is a test match"
"this is a match again because it contains the word test"
I'm a bit lost here. I tried text.match( /'(.*?)'/); to return everything between single quotes, and then subsequently have a function check for a substring match. But oddly that regex didn't even seem to return all strings within single quotes property.
Would greatly appreciate a pointer.. thanks!
I'm trying to figure out a regex which yields any string between single quotes ('), IF that string contains a given word.
For example, assume I have the following text, and I want to match everything between single quotes that contains the word "test":
Some sample text,
'this is test a match' and
'this is not a match' but
'this is a match again because it contains the word test'.
This "is not a test match because its double quotes".
And this is not a test match either because this is not encapsulated in quotes.
The regex would need to return two matches, namely
"this is a test match"
"this is a match again because it contains the word test"
I'm a bit lost here. I tried text.match( /'(.*?)'/); to return everything between single quotes, and then subsequently have a function check for a substring match. But oddly that regex didn't even seem to return all strings within single quotes property.
Would greatly appreciate a pointer.. thanks!
Share Improve this question asked Aug 30, 2015 at 13:13 BogeyBogey 5,7444 gold badges34 silver badges73 bronze badges 1-
please format your inline code correctly like so:
`code`
– Daniel Cheung Commented Aug 30, 2015 at 13:25
3 Answers
Reset to default 9Your regex is correct except you want to match all occurance so use g
for global search for all matches:
text.match(/'(.*?)'/g)
and to match for exact word:
text.match(/'(.*?test.*?)'/g)
You can allow it to be generic for any word by formulate the Regualr Expression using:
word = 'test'
text.match(RegExp("'(.*?"+word+".*?)'", 'g'))
I just fooled around with your example on RegexPal and figured out following expression: '(.*)test(.*)'
This also works
/\'.*(test).*\'/g
https://regex101./r/bD6zF0/1