我对Regex来说还很陌生,所以请在这里忍受。我想匹配字符串{{body}}
,但是如果它出现多次,则我不希望表达式匹配任何内容。我将提供一个示例和尝试过的内容,以便更轻松地说明我要实现的目标。
我的正则表达式::
(?< !{{body}}){{body}}{1}(?!{{body}})
输入字符串:
{{body}}{{body}}
结果与预期的不匹配,但是如果我将输入字符串更改为以下内容:
输入字符串:
{{body}} foobar {{body}
# or
{{body}} foobar {{body}}
我在所有标签{{body}}
上都找到了一个匹配项,并且我不希望有任何匹配项,因为{{body}}
出现了多次。
答案 0 :(得分:0)
使用嵌套的断言和原子组,它可以快速匹配字符串
具有单个{{body}}
标记的字符串中也没有其他标记。
(?s)^(?=(?>(.*?{{body}}))(?!.*{{body}})).+
可以看到这是基于行https://regex101.com/r/TtuMqA/1
或者,相同但没有原子团:
(?s)^(?=(.*?{{body}}))\1(?!.*{{body}}).*