正则表达式,代码和测试网站的不同结果
Regular expressions, different results from code and test website
我喜欢使用网站来测试我的正则表达式语法。我似乎遇到了一个我不知道如何解决的问题。
我用于正则表达式测试的网站:
https://regex101.com/
这是我的示例代码:
import re
text = "[\xa0]\xa0National Notification Authority, [X]\xa0National Enquiry Point. Address, fax number and e-mail address (if available) of other body: \nMinistry of Agriculture, Livestock and Food Supply\nSecretariat of Trade and International Relations\nE-mail: sps@agricultura.gov.br"
results = re.findall("(?<=\: ).*",text)
print(results)
#results =[' ', ' sps@agricultura.gov.br']
但是,如果我使用具有相同 re 的网站,它 returns 我真正想要的 - 地址和任何联系方式。
#\nMinistry of Agriculture, Livestock and Food Supply\nSecretariat of Trade and International Relations\nE-mail: sps@agricultura.gov.br
我不确定发生了什么。有没有办法同时获取地址和联系方式?
默认情况下,点 .
匹配任何字符 除了 换行符。您的文本在冒号后有一个换行符:other body: \nMinistry
。如果您希望点匹配任何字符,则必须相应地指示 findall
:
re.findall("(?<=\: ).*", text, flags=re.DOTALL) # Note the flags!
我喜欢使用网站来测试我的正则表达式语法。我似乎遇到了一个我不知道如何解决的问题。
我用于正则表达式测试的网站: https://regex101.com/
这是我的示例代码:
import re
text = "[\xa0]\xa0National Notification Authority, [X]\xa0National Enquiry Point. Address, fax number and e-mail address (if available) of other body: \nMinistry of Agriculture, Livestock and Food Supply\nSecretariat of Trade and International Relations\nE-mail: sps@agricultura.gov.br"
results = re.findall("(?<=\: ).*",text)
print(results)
#results =[' ', ' sps@agricultura.gov.br']
但是,如果我使用具有相同 re 的网站,它 returns 我真正想要的 - 地址和任何联系方式。
#\nMinistry of Agriculture, Livestock and Food Supply\nSecretariat of Trade and International Relations\nE-mail: sps@agricultura.gov.br
我不确定发生了什么。有没有办法同时获取地址和联系方式?
默认情况下,点 .
匹配任何字符 除了 换行符。您的文本在冒号后有一个换行符:other body: \nMinistry
。如果您希望点匹配任何字符,则必须相应地指示 findall
:
re.findall("(?<=\: ).*", text, flags=re.DOTALL) # Note the flags!