1. 程式人生 > >python正則表示式的無捕獲分組(取消分組)

python正則表示式的無捕獲分組(取消分組)

在正則中,分組有重要的作用,但有時候,我們並不想要分組。比如,給定一系列的地址字串,要找出省份名稱。如:‘江蘇省蘇州市虎丘區馬澗路靠近白馬澗花園‘, ’廣西壯族自治區玉林市容縣’等。
程式碼如下:

import re 
pattern_0 = re.compile(r'(.*?(省|自治區|特別行政區|市))')
pattern_1 = re.compile(r'(.*?(?:省|自治區|特別行政區|市))')
s = '江蘇省蘇州市虎丘區馬澗路靠近白馬澗花園'
result_0 = re.search(pattern_0, s).groups()
result_1 = re.search(pattern_1, s).groups()

In[242
]: result_0 Out[242]: ('江蘇省', '省') In[243]: result_1 Out[243]: ('江蘇省',)

可見,result_0中的分組結果中有兩個元素,而第二個元素‘省’不是我們需要的,所以在pattern_1的括號中增加”?:”, 也就是(?:省|自治區|特別行政區|市), 這樣,括號中的內容就不會被捕獲。