python 3正则表达式匹配字符串元字符

时间:2014-06-11 16:04:20

标签: python regex string python-3.x string-matching

我想写一行正则表达式,它可以匹配像“(2000)”这样的字符串和括号中的年份。然后我可以检查是否有任何字符串包含子字符串“2000”。

例如,我希望正则表达式匹配(2000)而不是2000,或(20000)或(200)。 也就是说:它们必须有四位数,第一位数在1和2之间;他们必须包括括号。

2000也只是我使用的一个例子,但我真的希望正则表达式包含所有可能的年份。

3 个答案:

答案 0 :(得分:1)

你必须逃避开括号和右括号,

>>> 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)']

它匹配括号内的所有四位数字(年份)。

答案 1 :(得分:0)

需要使用反斜杠转义特殊字符。括号(变为\(。因此(2000)变为\(2000\)

然后你可以做类似的事情:

if re.search(r"\(2000\)", subject):
    # Successful match
else:
    # Match attempt failed

答案 2 :(得分:0)

>>> import re
>>> x = re.match(r'\((\d*?)\)', "(2000)")
>>> x.group(1)
'2000'