2017-03-17 26 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的位置。

相關問題