I’ve been fumbling with this for a bit and thought I’d put it up to the regex experts:
I want to match strings like this:
abc[abcde]fff
abcffasd
so I want to allow single brackets (e.g. [ or ]). However, I don’t want to allow double brackets in sequence (e.g. [[ or ]]).
This means this string shouldn’t pass the regex:
abc[abcde]fff[[gg]]
My best guess so far is based on an example I found, something like:
(?>[a-zA-Z\[\]']+)(?!\[\[)
However, this doesn’t work (it matches even when double brackets are present), presumably because the brackets are contained in the first part as well.
You want something like:
At each character, the pattern accepts an opening bracket followed by another character, or the end of the string.
Or a little more neatly, using a negative lookahead:
Here, the pattern will only match characters as long as it doesn’t see two
[[ahead.