I am trying to write a regular expression that matches string that contain a certain word with a period for example (apple. or grape.). I got it to work without the period but not quite sure how to get it to work when there is a period in the word.
What I tried:
JavaScript
x
(?i)b(Apple|Grape)b (Working correctly without the period)
(?i)b(Apple.|Grape.)b (Returns no matches)
Sample strings that should work:
JavaScript
1 apple.
1 Apple.
apple. 2
grape. 1
test grape.
grape. test
this is a Apple. test
Sample strings that should not work:
JavaScript
1apple.
1Apple.
apple.2
grape.1
testgrape.
grape.test
longwordApple.test
this is a Apple.test
Advertisement
Answer
You could write the pattern as:
JavaScript
b(Apple|Grape).(?!S)
Explanation
b
A word boundary to prevent a partial word match on the left(Apple|Grape)
Capture either Apple or Grape.
Match a dot(?!S)
Assert a whitespace boundary to the right
In Java with the double escaped backslashes:
JavaScript
String regex = "(?<!\S)(Apple|Grape)\.(?!\S)";