I'm trying to match an entire string that starts with a certain string and then match any number of characters except ::, if :: was matched then only accept if followed by the string CASE.
So for example:
A string that starts with Linus:: followed by 0 or more 1 characters except if :: then CASE has to follow else only matches everything before the ::.
Linus::AOPKNS::CASE would capture the entire string
Linus::AOPKNS would capture the entire string
Linus::AOPKNS::OK would only capture Linus::AOPKNS
I imagine I'd have to use a positive lookahead but I'm not quite sure how to do that considering I wanna match any number of characters before the ::.
Use a tempered greedy token:
^ # Match at the start of the string
Linus:: # 'Linus::', literally,
(?:(?!::).)+ # followed by a sequence of characters that doesn't contain '::'
(?:::CASE)? # and, optionally, '::CASE'.
Try it on regex101.com.
Depending on your use case, you might want to add a \b (word boundary) at the end of the pattern.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With