【发布时间】:2012-05-05 20:15:27
【问题描述】:
我正在使用 Beautiful Soup 来识别特定标签及其内容。内容是 html 链接,我想提取这些标签的文本。
问题是文本是根据特定的模式由不同的数字组成的。我只对“61993J0417”和“61991CJ0316”等数字感兴趣,当数字中间有“J”和“CJ”时,我需要正则表达式来匹配。
我已使用此代码来实现此目的:
soup.find_all(text=re.compile('[6][1-2][0-9]{3}[J]|[CJ][0-9]{4}'))
soup 变量是特定标签的内容。此代码适用于 10 个案例中的 9 个。但是,当我在我的一个源文件上运行此脚本时,它也会匹配诸如“51987PC0716”之类的数字。
我不明白为什么,所以我向你寻求帮助。
【问题讨论】:
-
在特定文件中,此正则表达式产生四个错误匹配:51987PC0716、51992PC0405、51992PC0405-C 和 51992PC0405-A09。如果我将正则表达式更改为
'^[6][1-2][0-9]{3}[J]|[CJ][0-9]{4}$',它只会犯两个错误并匹配51987PC0716和51992PC0405。
标签: python regex beautifulsoup