如何控制html字符串上Python的re.findall()返回的结果?
|
我正在尝试捕获\“ Catalina 320 \” SO LONG的所有实例,因为它们出现在\“ The Boats \”字符串之前(请参见下面的常规示例)。
我具有捕获\“ Catalina 320 \”的所有实例的代码,但是我不知道如何在\“这些船\”字符串处停止它。
resultsArray = re.findall(r\'<tag>(Catalina 320)</tag>\', string, re.DOTALL)
谁能帮我解决这个缺失的部分?我尝试添加“。+这些船”,但是没有用。
谢谢-
京东
Blah blah blah
<tag>**Catalina 320**</tag>
Blah
<td>**Catalina 320**</td>
Blah Blah
<tag>**These boats** are fully booked for the day</tag>
Blah blah blah
<tag>Catalina 320</tag>
<tag>Catalina 320</tag>
没有找到相关结果
已邀请:
4 个回复
社攻取墟槽
之前进行搜索:
耐扫鹤胶鞭
来解析...
执行此操作将产生:
尾注: 您问题的当前版本没有有效的标记,但是我假设您使用的是xml或html(这是问题的版本1中的内容)...我的答案可以按原样处理您的文本,但是假定某种结构标记更有意义,因此我使用了以下输入文本,并将其本地保存为foo.html:
如果您想对编码问题更谨慎一些,可以在将with4解析为HTML时使用
作为后备
替秀宝
分组中的第一组将包含Catalina 320比赛列表。
场竟矩喘崩
码:
结果
我的正则表达式解决方案出了什么问题? 时间: lxml-100% 解决方案1-8.1% 溶液2-7.7% 溶液3-2.6% 使用正则表达式不需要文本为XML或HTML文本。 。 那么,还有哪些假说正则表达式不如lxml处理这个问题呢? 编辑1
的解决方案不好: 如果不存在“'Catalina 320'”之前,则此正则表达式将捕获位于“这些船”之后的“ Catalina 320”的发生 该模式必须是:
但这与其他解决方案相比是一个相当复杂的模式