2017-03-17 44 views
4

我试图在任期结束时匹配加号的任何事件,除非它正好发生两次。例如,c+和中的加号应该匹配,但不是c++如何匹配字符的任何出现,除非出现两次?

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

+1

向第一个应用向前看以前没有'+':'(?<!\ +)\ + $' –

+0

@SebastianProske'(?<!'它看起来在后面 –

+0

@BahramdunAdil Yep,我的大脑处于工作模式 –

回答

6

您可以使用负先行使用正则表达式:

\b\+(?:\+{2,})?(?!\+) 

RegEx Demo

正则表达式破碎:

  • \b - 断言字边界
  • \+ - 匹配字面+
  • (?:\+{2,})? - 可选匹配2个或更多+
  • (?!\+) - 负前瞻,以确保没有+提前阻止++
+1

我只需要匹配加号,所以我会接受您的答案。谢谢! – phly

0

我喜欢在这里建立我的正则表达式:regex builder 貌似这个人会抢C +,而不是C++和C有3个或更多+迹象

(c\+{1}|(\+){3,}) 
0

^[^+]*(?:\+|[+]{3,})$将匹配您的连接以及在你设计的例子中c的位置。

相关问题