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

0 投票
3 回答
1318 浏览
提问于 2025-04-18 09:27

我想写一个正则表达式,能够匹配像“(2000)”这样的字符串,也就是年份要放在括号里。这样我就可以检查任何字符串中是否包含“2000”这个子串。

举个例子,我希望这个正则表达式能匹配“(2000)”,而不是“2000”,也不是“(20000)”或者“(200)”。也就是说:它们必须正好有四位数字,第一位数字在1到2之间;而且必须包含括号。

另外,2000只是我用的一个例子,实际上我希望这个正则表达式能匹配所有可能的年份。

3 个回答

0

在编程中,有时候我们需要在代码里使用一些特定的格式或者结构,这样才能让计算机正确理解我们的指令。比如说,代码块就是一种把相关代码放在一起的方式,这样可以让它们更清晰,也更容易管理。

在这个例子中,

>>> import re
>>> x = re.match(r'\((\d*?)\)', "(2000)")
>>> x.group(1)
'2000'
就是一个代码块的占位符,里面可能会包含一些具体的代码内容。我们在讨论的时候,用这样的占位符可以让人更容易理解我们在说什么,而不需要一次性展示所有的代码。

0

特殊字符需要用反斜杠来转义。比如说,左括号 ( 需要变成 \(。所以 (2000) 就变成了 \(2000\)

接下来你可以做一些类似这样的事情:

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

你需要对开括号和闭括号进行转义,

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

或者

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

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

撰写回答