I want to select strings that are not in a $ ... $
group. I can choose the group itself, but it should be the other way around.
Example :
$ blah **deneme** blah $ xxx **bold** xxxxx $ blah **bold** blah $
First group is $ blah **deneme** blah $
Second group is $ blah **bold** blah $
I want to get this in regex **bold**
so it must start with **
, end with **
but cannot be a member of $...$
group
I wrote regex but what I needed would be to choose the opposite.
/(?:$)(.*?)[*_]{2}([^*_]+)[*_]{2}(.*?)(?:$)/gm
Advertisement
Answer
You may use this regex with a lookahead:
**S+?**(?=(?:(?:[^$]*$){2})*[^$]*$)
RegEx Details:
**
: Match starting**
S+?
: Match 1 or more characters that are not whitespace (lazy)**
: Match ending**
(?=(?:(?:[^$]*$){2})*[^$]*$)
: Lookahead to assert 0 or more pair of$..$
ahead to make sure we are not matching inside$...$