从一行中提取文本:Python中的正则表达式
我正在用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]
|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>。