我正在使用 Python 中的正则表达式,我正在为此苦苦挣扎。我在这样一个行的文件中有数据:
|person=[[Old McDonald]]
我只想能够Old McDonald
从这条线中提取出来。
我一直在尝试使用这个正则表达式:
matchLine = re.match(r"\|[a-z]+=(\[\[)?[A-Z][a-z]*(\]\])", line)
print matchLine
但它不起作用;None
是每次的结果。
构造[A-Z][a-z]*
不匹配Old McDonald
。您可能应该使用类似[A-Z][A-Za-z ]*
. 这是代码示例:
import re
line = '|person=[[Old McDonald]]'
matchLine = re.match ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)
输出是Old McDonald
给我的。如果您需要在字符串中间进行搜索,请使用re.search
代替re.match
:
import re
line = 'blahblahblah|person=[[Old McDonald]]blahblahblah'
matchLine = re.search ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)