在一个字符串中查找多个正则表达式

问题描述:

假设我们有这样的:在一个字符串中查找多个正则表达式

html = 'http://example.com' 
regex = '<(\d{0,2})>' 
regex1 = '<span>(.+?)</span>' 
p = re.compile(regex) 
p1 = re.compile(regex1) 

是否有可能re.findallpp1一个findall语句中?

+0

Couldn你只是用'regex ='( | (。+?))'? – 2013-03-11 14:15:13

+0

不确定这会起作用。我需要找到两者(总是存在两个),当python接近第一个并评估为True时,则会跳过我猜测的第二个语句。 – nutship 2013-03-11 14:20:02

+0

哦,我明白了...在这种情况下,我不确定Python文档是否表示findall会返回所有不重叠的匹配项。可能有一种方法,但我不知道其中一种 - 如果没有,可以考虑合并这两个结果数组吗? – 2013-03-11 14:32:39

首先:您通常希望避免使用正则表达式来解析HTML。您确实想使用HTML解析器。 BeautifulSoup让你寻找的元素与包含(甚至使用正则表达式匹配在HTML中发现特定方面)

您可以结合使用|管的正则表达式有一定的文字,一组中:

p_or_p1 = re.compile('(?:{}|{})'.format(p, p1)) 
+0

感谢您的HTML解析器建议。我一定会试着学习这个,但直到我做到这一点,我至少在当前的项目中遇到了正则表达式。顺便说一句。你能否推荐任何有价值的网址到HTML解析器的东西,除了官方文档? – nutship 2013-03-11 14:38:42

+0

我不能推荐任何BeautifulSoup教程,因为我从来没有读过一个。 :-)虽然这个文档很简单,你可以随时查看这里的问题(我回答了相当多的BS问题)。 – 2013-03-11 14:41:16