我已经在一组字符串网址上实现了非贪婪的正则表达式,我试图清理它们,以便它们在.com(.co.uk等)之后结束。其中一些在所需截止后继续'
或"
或<
,因此我使用了x = re.findall('([A-Za-z0-9]+@\S+.co\S*?)[\'"<]', finalSoup2)
。
问题是有些网址是misc@misc.misc' misc&#39;&#39; misc&#39; (或类似于&lt;&gt;)等实现非贪婪的正则表达式后,我仍然留下enquiries@smart-traffic.com.au">enquiries@smart-traffic.com.au
,例如。
我已经尝试了两个??
,但显然无法正常工作,那么他们在这种情况下实现干净网址的正确方法是什么?
答案 0 :(得分:2)
你的正则表达式的问题在于你目前只寻找非空格(句号)而不是寻找非空格(句号)非空格。
因此,在这种情况下,您可以根据上述信息使用以下正则表达式。
>>> finalSoup2 = """
... misc@misc.misc'misc''misc
... enquiries@smart-traffic.com.au">enquiries@smart-traffic.com.au
... google.com
... google.co.uk"'<>Stuff
... """
>>>x = re.findall('([A-Za-z0-9]+@[^\'"<>]+)[\'"<]', finalSoup2)
>>>x
['misc@misc.misc',
'enquiries@smart-traffic.com.au',
'enquiries@smart-traffic.com.au\ngoogle.com\ngoogle.co.uk']
然后您可以使用它来获取您想要的网址,但您必须确保将它们拆分为r'\n'
,因为它们可能在文本中有换行符,如上所示。