使用正则表达式选择匹配字符串的一部分

时间:2011-08-19 08:46:52

标签: regex

我需要从网页中提取的数据由特定注释分隔:<!--data-->。 我使用这个表达式:<!--data-->.+?<!--data--> ad它运行正常。

但也许有一种方法可以在字符串的开头和结尾处获得没有html注释的文本?

在html代码中查找img标签时我也需要这个,但结果shuld只包含图片的链接。

这可以包含在正则表达式中吗?

3 个答案:

答案 0 :(得分:0)

请参阅此主题以了解如何使用正则表达式解析html:Regex match open tags except xhtml self contained tags

答案 1 :(得分:0)

如果你想要在括号( )中包含要捕获的正则表达式的一部分,你可以用$ 1,$ 2等检索捕获的字符串。

一般来说,使用正则表达式解析HTML是一个非常糟糕的主意。看到这个答案: RegEx match open tags except XHTML self-contained tags

答案 2 :(得分:0)

如果要排除这些内容,请在所需部分周围放置括号,然后使用捕获组或使用外观断言。

解决方案1:

<!--data-->(.+?)<!--data-->

您的结果在第1组中。您如何获取此捕获组的内容取决于您的语言。您应该将此信息添加到您的问题中。

解决方案2:

(?<=<!--data-->).+?(?=<!--data-->)

仅匹配.*?定义的内容。只有当你的语言支持看后面并向前看断言时才能工作。

解决方案3:

使用Html解析器。这可能是您的最佳解决方案。因为Html支持嵌套标记,并且不能可靠地匹配那些具有正则表达式的标记。

如果你告诉我们你使用的语言,你可以使用这种语言的解析器得到一个很好的答案。