我试图使用find/find_all-方法获得多个regex匹配,但无法使其工作。
HTML代码的一部分可以是这样的:
<b>Week</b> 22: 3871983然后,在代码中,我尝试以下几点:
import re
from robobrowser import RoboBrowser
browser = RoboBrowser(parser='html.parser')
browser.open(some_url_containing_the_above_html_code)
result = browser.find_all(text=re.compile('Week\s+(\d+).*?(\d+)'))
print(result)它输出的内容如下:
['Week 22:\xa3871983']我期待着这样的事情:
['22', '3871983']\xa毁了它吗?还是不能在一个正则表达式中返回多个匹配?我真的不知道怎么解决。我总是可以将返回值存储在字符串中,然后再用拆分或regex解析它一次,但是我更希望直接使用find或find_all来获得它。
发布于 2017-05-30 22:31:34
对find_all函数的误解。所有这些都会返回与给定条件匹配的元素列表。在你的情况下,这是一种判决。你的regex有子模式。但这与此并无实际关系。find_all不会被正则表达式拆分。所以
['Week 22:\xa3871983']是预期的结果。如果你想把它转换成'22','3871983‘
import re
for result in results:
parts = re.split("\s", result)
parts[0] = parts[0][4:]https://stackoverflow.com/questions/44272567
复制相似问题