2012-07-12 40 views
1

我有.Net正則表達式([abc] [e])+([abc]),但是當我嘗試匹配時,只匹配幾個字符,而不匹配組中的整個字符串。.Net RegEx匹配模式「aebecea」/「aebeceb」/「aebecec」/「beceaec」

這是我的輸入和所希望的輸出組

  • aebeceaxyz - 第1組(aebece),組2的(a)
  • aebecebxyz - 第1組(aebece),組2(B)
  • aebececxyz - 第1組(aebece),2組(C)
  • beceaecxyz - 第1組(beceae),2組(C)

在我的正則表達式,我得到的(CE)的結果(一)/(C e)(b)/(ce)(c)/(ae)(/ c)這不是我想要的。

+0

你想得到什麼?我無法理解你的邏輯...... – Madman 2012-07-12 18:51:30

回答

2

您在第一組中獲得了[abc] [e]的第一場比賽,但是您想要圍繞您捕捉的整個組包裹一些人。此外,您可以使用?:使內部組無法捕獲。這應該給你想要的結果:

((?:[abc][e])+)([abc]) 
0

嘗試([abce]{5}[e])+([abc])

你想在第一組中沒有指定重複次數

你也可以只([abce]{6})+([abc]),除非你真的要確保在第一組以「E」結束的正則表達式

+1

我相信他正在努力使他不必指定第一組中的重複次數,在這種情況下,我的答案應該做到這一點。 – 2012-07-12 19:02:50

+0

好點,這會讓你正確的匹配,但它假設你的輸入是符合你提到的模式。 – Borophyll 2012-07-12 19:11:33

0

你可以使用([abc] [e])。*([abc])也許?

+0

*。語法很貪婪,只會捕獲字符串的其餘部分,只留下一個包含2個字母的組。 – 2012-07-12 19:00:03