2014-06-11 570 views
0

我想寫一行正則表達式,可以匹配像「(2000)」這樣的字符串,並在圓括號中使用多年。那麼我可以檢查是否有任何字符串包含子字符串「2000」。例如,我想要正則表達式匹配(2000)不是2000,或者(20000)或(200)。 也就是說:他們必須有正好四位數字,第一位在1和2之間;他們必須包括括號。python 3正則表達式匹配字符串元字符

2000也只是一個例子,但我真的想要正則表達式包含所有可能的年份。

+1

你想要什麼?你能給我們提供一些字符串匹配的例子嗎? –

+0

您可以簡單地使用'\(\ d + \)' – hwnd

+0

謝謝,由\([1-2](\ d {3})\解決) – lchai

回答

0

特殊字符需要用反斜線進行轉義。括號(變成\(。因此(2000)變成\(2000\)

然後,你可以這樣做:

if re.search(r"\(2000\)", subject): 
    # Successful match 
else: 
    # Match attempt failed 
0
>>> import re 
>>> x = re.match(r'\((\d*?)\)', "(2000)") 
>>> x.group(1) 
'2000' 
1

你必須躲避開閉paranthesis,

>>> import re 
>>> str = """foo(2000)bar(1000)foobar2000""" 
>>> regex = r'\(2000\)' 
>>> result = re.findall(regex, str) 
>>> print(result) 
['(2000)'] 

OR

>>> import re 
>>> str = """foo(2000)bar(1000)foobar(2014)barfoo(2020)""" 
>>> regex = r'\([0-9]{4}\)' 
>>> result = re.findall(regex, str) 
>>> print(result) 
['(2000)', '(1000)', '(2014)', '(2020)'] 

它匹配所有四位數字(年份)出現在巴蘭國內論文。