2017-04-08 187 views
0

我想要一個匹配「+ - + - + - + - + --.......」的模式,「+ - 」可以出現多次,但它們應該在一起......不喜歡「+++ - + - 」正則表達式 - 與循環字符串匹配的模式

我試過「[+ - ] +」,但它沒有指定在+和 - 是連續

+1

未來,要自我解決。 regex101.com是一個了不起的資源來試用正則表達式模式。這是一個非常基本的正則表達式問題。我首先感到驚訝的是,這個問題沒有被低估爲遺忘,其次,兩個人發現答案有幫助。當有人回答你的問題時,不要只感謝他們 - 用綠色勾號給答案,以便你的問題被認爲已經解決。如果它不適用於某些可能的輸入(例如' - +'),那麼您需要用額外的樣本來澄清您的問題以進行測試。 – mickmackusa

+1

https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 – 0m3r

回答

2

的方括號([])指定一個字符類。什麼,你不是想要的是使用非捕獲組:

(?:\+-)+ 

淡然的你可以把它捕獲組(\+-)+如果你想以及捕捉這一切。

+1

是什麼意思?:\意思是 –

+0

'()'指定一個捕獲組,加入' ?:'告訴它是一個非捕獲組。 – Vallentin

+0

@PrateekKalra至少在Google搜索「非捕獲組」的提示下做海報。 –

1

考慮以下樣品:

+++--+--- 
-+-+- 
-+-+-+ 
-+-+-+- 
------ 
++++++ 
+-+-+- 
+-+-+-+ 
+-+-+-+- 
--++--++- 
++--++--+ 
+-5 
-+-A 

此Vallentin的圖案不具有錨,並會匹配字符串裏的任何東西。(?:\+-)+

字符串可以以它開頭的同一個字符結尾嗎?

如果不是,將其更改爲:

^(?:\+-)+$

,如果它可以:

對於 「+只啓動」: 訪問全場比賽結果使用模式:^(\+(?:-|$))+$

對於可能性「+ and - starts」: 使用模式:訪問完整匹配結果:^(?:([+-])(?!\1))+$

比較這三種模式@。

+0

@PrateekKalra你的實現如何?我對你的案子有更深入的瞭解,我有一些擔憂。請閱讀我的答案,如果我的答案是「更好」,請切換綠色標記。 – mickmackusa

+0

OP已經指定模式爲'+ -'和'+++ - + ---'無效。如果OP需要線路的開始/結束,那麼添加這些將不成問題。另外考慮一下,說'String'的'matches()'強制默認。要點是我們不知道OP使用什麼。 – Vallentin

+0

@Vallentin不要被冒犯。更多的時候,第一次海報不完全理解他們所問的問題,並沒有在他們的問題中列出所有必要的信息。我不僅想詳細說明這個問題,還想告訴未來的讀者,以減少複製粘貼問題。如果它包含正在使用的實際代碼,這將是一個更好的問題。 – mickmackusa