2015-06-21 69 views
0

我正在編程的語言是Objective C,儘管這可能對解決此問題沒有任何影響。正則表達式分組

給定0至3次出現的6, 7, 9, 11 and 13及其修飾符b#,如何編寫正則表達式以便您可以檢索每個值的分組?正則表達式甚至是最好的解決方案嗎?下面的是一些字符串需要匹配的一些例子:

Example 1: 7#9 //The groupings should be 7 #9 

Example 2: 7b9#13 //The groupings should be 7 b9 #13 

Example 3: b6 //The grouping should be b6 

Example 4: 7#1311 //The groupings should be 7 #13 11 

Example 5: 7911 //The groupings should be 7 9 11 

要匹配只是一個像#13號,我試過如下:

([#b]?13|11|9|7|6)? 

它爲#13場比賽,而不是#11。我很困難。

回答

0

的主要問題是,[#| B]集不被施加到13,圖11,圖9中, 7和6個人。另外,我複製它來處理多個分組。這裏的修復:

([b#]?13|[b#]?11|[b#]?9|[b#]?7|[b#]?6)?([b#]?13|[b#]?11|[b#]?9|[b#]?7|[b#]?6)?([b#]?13|[b#]?11|[b#]?9|[b#]?7|[b#]?6)?([b#]?13|[b#]?11|[b#]?9|[b#]?7|[b#]?6)? 

對於字符串b9#1113現在分組如下:

組1:B9
第2組:#11
第3組:13

0

你錯位了括號。所述答案應該是這樣的:

[#B](13 | 11 | 9 | 7 | 6)

哪裏它看起來爲每個數的組合與可能#B?

代替

([#B] 13 |?11 | 9 | 7 | 6)?

在那裏只查找的#13或11或9的組合..等

+0

是啊,我想一個解決方案就像那樣。唯一的問題是匹配。例如,對於#139,它創建了4個組:#13,13,9和9。我如何區分我想要的羣體和我不想要的羣體? – 02fentym

+0

我更新了我的答案。請注意,我刪除了最後一個「?」因爲它也尋找零長度匹配,這意味着總是創建一個額外的組,即使沒有匹配你的正則表達式 – IMAMBAKS

+0

嗯......它仍然#13,9#11等失敗。 :https://regex101.com/r/nJ1dP6/1 – 02fentym