I would like to find a string that starts and ends with a specific special character but skipping when another specific charachter.
I want to find any string that starts with “hello”and ends with a dot “.” but not like “here end.” this must be skipped when “here end” is preceding the dot “.”.
Sample :
String para = "XXXX@gxxl.com. this will share the costs and hello you the initial here end. must be carrefully done.Keep going."
I tried the following regex but its not working:
hello.+?((?=([.]))
I got this :
"hello you the initial here end."
but this is required :
"hello you the initial here end. must be carrefully done."
Advertisement
Answer
You can yse
hello.*?(?<!here end).
See the regex demo. Details:
hello
– a fixed string.*?
– any zero or more chars other than line break chars as few as possible(?<!here end).
– a.
that is not immediately preceded withhere end
.
If you need to exclude the .
from match, put it into a lookaround, hello.*?(?<!here end)(?=.)
.