【问题标题】:Capturing text with Python regular expressions使用 Python 正则表达式捕获文本
【发布时间】:2016-09-27 09:53:32
【问题描述】:

我在使用 Python 正则表达式捕获 html 标记之间的字符串时遇到了一些麻烦。我一直在尝试从下面的字符串中捕获字符串“示例链接 2”:

<link>example link 1</link>
<item>
     <link>example link 2</link>
</item>

到目前为止我已经得到了这个:

(?<=<link>)(.*)(?=</link>)

但是,上面的正则表达式返回“示例链接 1”和“示例链接 2”。谁能帮忙只选择“示例链接2”?

编辑:不幸的是,我需要对这个问题使用正则表达式,所以我不能使用解析器等。不过感谢您的建议。

【问题讨论】:

  • 改用解析器。
  • '&lt;link&gt;(.*?)&lt;/link&gt;' 可能会更好。 ? 给出了最小匹配。
  • 使用elementtree和xpath
  • 不要对 HTML 使用正则表达式! xml 之类的 HTML 支持标签嵌套,Python re 模块根本不喜欢...

标签: python regex python-2.7


【解决方案1】:

您需要在末尾添加“g”修饰符。例如,正则表达式应如下所示:

/(?<=\<link>)(.*)(?=<\/link>)/g

“g”修饰符告诉引擎在找到第一个匹配项后不要停止,而是继续直到找不到更多匹配项。
演示here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 2012-04-22
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多