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

从一行中提取文本:Python中的正则表达式,python,regex,Python,Regex,我正在用Python处理正则表达式,我正在努力解决这个问题。 我在一个包含以下行的文件中有数据: |person=[[Old McDonald]] 我只想从这行代码中提取出老麦当劳 我一直在尝试使用以下正则表达式: matchLine = re.match(r"\|[a-z]+=(\[\[)?[A-Z][a-z]*(\]\])", line) print matchLine 但它不起作用无每次都是结果。构造[A-Z][A-Z]*与旧麦当劳不匹配。您可能应该使用类似于[A-Z][A-Za-Z]

我正在用Python处理正则表达式,我正在努力解决这个问题。 我在一个包含以下行的文件中有数据:

|person=[[Old McDonald]]
我只想从这行代码中提取出老麦当劳

我一直在尝试使用以下正则表达式:

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

但它不起作用<代码>无每次都是结果。

构造
[A-Z][A-Z]*
旧麦当劳
不匹配。您可能应该使用类似于
[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.Stase<代码>,而不是<代码> Re.Matx >:

import re
line = 'blahblahblah|person=[[Old McDonald]]blahblahblah'
matchLine = re.search ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)

构造
[A-Z][A-Z]*
旧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.Stase<代码>,而不是<代码> Re.Matx >:

import re
line = 'blahblahblah|person=[[Old McDonald]]blahblahblah'
matchLine = re.search ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)

提取意味着你要更改
?我只想能够从这行存储旧麦当劳,这样我就可以把它放到字典里。提取意味着你要更改
?我只想能够从这行存储旧麦当劳,这样我就可以把它放到字典里。对不起,我认为它对我不起作用。我得到了这个错误:AttributeError:'NoneType'对象没有属性'group'@user2057841您是按原样运行我的示例,还是将我的正则表达式复制到您的代码中?好的,我得到了!!非常感谢。请注意,
re.match
仅在字符串开头搜索。如果你想在字符串中间寻找可能发生的事情,请使用<代码> Re.String 。抱歉,我认为它不适合我。我得到了这个错误:AttributeError:'NoneType'对象没有属性'group'@user2057841您是按原样运行我的示例,还是将我的正则表达式复制到您的代码中?好的,我得到了!!非常感谢。请注意,
re.match
仅在字符串开头搜索。如果要搜索字符串中间的可能发生,请使用<代码> Re.String < /Cord>。