如何匹配任何出现的字符,除非它出现两次?

phl*_*hly 4 java regex regex-negation regex-lookarounds

我试图在一个术语的末尾匹配任何出现的加号,除非它恰好发生了两次.例如,在加号c+c++++应匹配,而不是c++.

\+{1}$|\+{3,}$显然,天真的方法不起作用.你有更好的主意吗?

anu*_*ava 6

您可以使用负前瞻使用正则表达式:

\b\+(?:\+{2,})?(?!\+)
Run Code Online (Sandbox Code Playgroud)

RegEx演示

RegEx分手:

  • \b - 断言Word边界
  • \+ - 匹配文字 +
  • (?:\+{2,})? - 可选择匹配2个或更多 +
  • (?!\+)- 否定前瞻以确保没有+前方阻止++