从一行中提取文本:Python中的正则表达式

时间:2013-02-28 09:05:41

标签: python regex

我正在使用Python中的正则表达式,我正在努力解决这个问题。 我有一个像这样的行文件中的数据:

|person=[[Old McDonald]]

我只想从这一行中提取Old McDonald

我一直在尝试使用这个正则表达式:

matchLine = re.match(r"\|[a-z]+=(\[\[)?[A-Z][a-z]*(\]\])", line)
print matchLine

但它不起作用;每次都会得到None

1 个答案:

答案 0 :(得分:3)

构造[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)