I'd like to match the word Date
only in these strings:
somewords someDate;
someDate;
someDate(
someDate;
Not in these strings:
Date(
Date;
Date;
Date
someDate
Java.localDate;
I've managed everything except for not match the Date
in Java.localDate;
with:
(?<=\w)Date(?=;|\()
Please check my Regex101 demo.
Could someone please help with the last step? Thanks!
The regex demo you've given, selected "PCR2 (PHP >= 7.3)" as regex engine, so in that case you could use the \K
(i.e., "keep out") feature:
(?<!\.)\b\w+\KDate(?=[;(])
(regex demo)
This rejects inputs where the word ending in "Date" is preceded by a point, like in Java.localDate;
. If there are other characters (punctuation?) which also cannot occur right before the word, then list them like this (?<![.,;])
.
If you don't have support for \K
in your regex engine, then you could use a capture group. You'd match the whole word, but capture group 1 will represent "Date" in the match:
(?<!\.)\b\w+(Date)(?=[;(])
(regex demo)