在一个字符串中查找多个正则表达式
假设我们有这样的:在一个字符串中查找多个正则表达式
html = 'http://example.com'
regex = '<(\d{0,2})>'
regex1 = '<span>(.+?)</span>'
p = re.compile(regex)
p1 = re.compile(regex1)
是否有可能re.findall
都p
和p1
一个findall
语句中?
首先:您通常希望避免使用正则表达式来解析HTML。您确实想使用HTML解析器。 BeautifulSoup让你寻找的元素与包含(甚至使用正则表达式匹配在HTML中发现特定方面)
您可以结合使用|
管的正则表达式有一定的文字,一组中:
p_or_p1 = re.compile('(?:{}|{})'.format(p, p1))
感谢您的HTML解析器建议。我一定会试着学习这个,但直到我做到这一点,我至少在当前的项目中遇到了正则表达式。顺便说一句。你能否推荐任何有价值的网址到HTML解析器的东西,除了官方文档? – nutship 2013-03-11 14:38:42
我不能推荐任何BeautifulSoup教程,因为我从来没有读过一个。 :-)虽然这个文档很简单,你可以随时查看这里的问题(我回答了相当多的BS问题)。 – 2013-03-11 14:41:16
Couldn你只是用'regex ='( | (。+?))'? – 2013-03-11 14:15:13
不确定这会起作用。我需要找到两者(总是存在两个),当python接近第一个并评估为True时,则会跳过我猜测的第二个语句。 – nutship 2013-03-11 14:20:02
哦,我明白了...在这种情况下,我不确定Python文档是否表示findall会返回所有不重叠的匹配项。可能有一种方法,但我不知道其中一种 - 如果没有,可以考虑合并这两个结果数组吗? – 2013-03-11 14:32:39