我正在尝试使用find / find_all-method获取多个正则表达式匹配,但无法使其正常工作。
一段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是否会破坏它?或者你不能在一个正则表达式中返回多个匹配?真的不知道如何解决它。我总是可以将返回值存储在一个字符串中,并使用split或regex再次解析它,但我更愿意直接用find或find_all来解析它。
答案 0 :(得分:0)
对find_all
功能的误解。它确实返回了与给定条件匹配的元素列表。在你的情况下,它是一个正则表达式。你的正则表达式有子模式。但这并不是真的相关。 find_all
不会被正则表达式分割。所以
['Week 22:\xa3871983']
是预期的结果。如果你想将它转换为['22','3871983']
import re
for result in results:
parts = re.split("\s", result)
parts[0] = parts[0][4:]