2015-03-25 38 views
1

爲什麼簡單的事情在互聯網上看了一個小時後我找不到答案?不止一次正則表達式匹配

我有這樣的句子:

HeLLo woRLd HOw are YoU 

我要拍攝包含兩個所有羣體大寫字母

[A-Z]{2} 

上述工程正則表達式,但僅捕獲LL(前兩個大寫字母),而我想要LL在一個組中,而在其他組中也是RLHO

請幫忙嗎?

回答

2

大多數正則表達式引擎暴露一些方式來使您的表達全球。這意味着你的表情將被多次應用。此全局標誌通常在您的表達式末尾用/g標記表示。 This是沒有/g標誌的正則表達式,而this是應用所述標誌時發生的情況。

不同的語言以不同的方式公開這樣的功能,例如在C#中,這是通過Regex.Matches語法完成的。在Java中,您使用while(matcher.find()),它繼續提供與提供的模式相匹配的子字符串。

編輯:我不是一個Python的人,但是從例如,購here來看,你可以不喜歡這樣:

it = re.finditer(r"[A-Z]{2}", "HeLLo woRLd HOw are YoU") 
for match in it: 
    print "'{g}' was found between the indices {s}".format(g=match.group(), s=match.span()) 
+0

謝謝。在Python中? – yanivps 2015-03-25 08:50:49

+0

@yanivps:我已經更新了我的答案。 – npinti 2015-03-25 08:56:56

+0

非常感謝您的幫助! – yanivps 2015-03-25 14:03:53

0

不能在這種情況下有多個組,但你可以有多個匹配。將全局標誌添加到您的正則表達式,並使用一種方法來匹配正則表達式。

對於javscript,它將是/[A-Z]{2}/g。 該方法最有可能返回一個匹配數組,並且您可以使用索引來訪問它們。

+0

感謝。在python中,我該怎麼做? – yanivps 2015-03-25 08:50:00