Python正则表达式模式/函数未从我的数据字符串检索数据
我正试图使用各种正则表达式,在不断变化的数据字符串上提取字符串中的某些部分 例如,下面的两个正则表达式应该只起作用:Python正则表达式模式/函数未从我的数据字符串检索数据,python,regex,python-2.7,Python,Regex,Python 2.7,我正试图使用各种正则表达式,在不断变化的数据字符串上提取字符串中的某些部分 例如,下面的两个正则表达式应该只起作用:example$00.00和bla$00.00 data = "Maybe Example $00.00 test $00.00 bla $00.00 dasdsadasd" pull1 = re.match(r'^(Example) (\D\w+\D\w+)', data) pull2 = re.match(r'^(bla) (\D\w+\D\w+)', data) 有人知道我
example$00.00
和bla$00.00
data = "Maybe Example $00.00 test $00.00 bla $00.00 dasdsadasd"
pull1 = re.match(r'^(Example) (\D\w+\D\w+)', data)
pull2 = re.match(r'^(bla) (\D\w+\D\w+)', data)
有人知道我做错了什么吗
提前谢谢
-Hyflexmatch()
约束匹配从字符串开头开始(请参阅文档)。您需要的是search()
。您也不希望将^
放在regexp的开头:这也会迫使匹配从字符串的开头开始。您的模式无法匹配从数据开始的字符串。请尝试:\b((示例| bla)\s\$(\d{2})\.\3)\b
\b
-开始单词边界
(
-开始匹配#1
(示例| bla)
-匹配#2
\s
-空格
\$
-美元符号
(\d{2})
-匹配#3:2位
\.
-小数位
\3
-重复匹配#3
)
-结束匹配#1
\b
-结束单词边界
查看操作:如果要提取部分字符串,请使用“搜索”而不是“匹配”。
此代码工作正常:
data = "Maybe Example $00.00 test $00.00 bla $00.00 dasdsadasd"
pull1 = re.search(r'(Example) (\D\w+\D\w+)', data)
pull2 = re.search(r'(bla) (\D\w+\D\w+)', data)
print pull1.group(0)
print pull2.group(0)
我已经从你的正则表达式中删除了“^”
祝你好运 “^”表示从换行符开始,或字符串的开头(由1_CR指出)。所以只要它在那里,它就永远不会匹配任何东西
在任何情况下,我都会使用findall,然后解析出您以后不需要的“test”值
re.findall(r'(.*?)\s(\$.*?)\s', data)
会回来的
[('Maybe Example', '$00.00'), ('test', '$00.00'), ('bla', '$00.00')]
re.match()匹配字符串开头的模式。如果希望它识别字符串中任何位置的模式,请使用search()而不是match()。此外,在搜索中使用“^”将其限制在字符串的开头
在您的示例中,您正在尝试匹配字符串开头的“example”,该字符串由于未找到而返回None。查看更多信息 他们在拉什么?当它明显存在于我的代码中时,它返回None
。非常感谢你解释正则表达式,这对我真的很有帮助(我与正则表达式斗争)。当然,你可以将它更改为\b((示例| bla)\s\$\d+.\d{2})\b
,因为美元金额可能超过99.99美元,效果非常好,非常感谢你。绿色勾号将在5分钟内颁发:)不完全是。谢谢,更新了。我通常只使用FUNDALL,所以我没有考虑。