我试图在一个术语结尾处匹配任何出现的加号,除非它恰好发生了两次。例如,c+
和c++++
中的加号应该匹配,但c++
中的不是。
显然,天真的方法\+{1}$|\+{3,}$
不起作用。你有更好的主意吗?
答案 0 :(得分:6)
您可以使用负前瞻使用正则表达式:
\b\+(?:\+{2,})?(?!\+)
RegEx分手:
\b
- 断言字边界\+
- 匹配文字+
(?:\+{2,})?
- 可选择匹配2个或更多+
(?!\+)
- 否定前瞻以确保阻止+
前面没有++
答案 1 :(得分:0)
我喜欢在这里构建我的正则表达式:regex builder 看起来这个人会抓住c +,而不是c ++,而c抓住3个或更多+符号
(c\+{1}|(\+){3,})
答案 2 :(得分:0)
^[^+]*(?:\+|[+]{3,})$
将符合您的人为设想示例,以及c
在您设计的示例中的任何位置。