【问题标题】:Simple regex question?简单的正则表达式问题?
【发布时间】:2010-03-13 02:26:39
【问题描述】:

在我正在解析的流中,我需要以这种模式解析一些东西:

<b>PaintTitle</b></td><td class=detail valign="top" align=left><div align=left><font size=small><b>The new great album by Pet Shop Boys</b>

我如何获得字符串"The new great album by Pet Shop Boys",其中&lt;b&gt;PaintTitle&lt;/b&gt; 保证每个专辑出现一次?

【问题讨论】:

  • 我猜反对票是由于人们普遍认为 RegEx 不应该用于解析 HTML。像 Html Agility Pack 这样的东西几乎总是一个更好的主意。

标签: c# .net regex string parsing


【解决方案1】:

如果你坚持使用正则表达式,你可以试试这个:

(?:<b>PaintTitle<\/b>).*?<b>(.*?)<\/b>

【讨论】:

    【解决方案2】:
    (?:<b>PaintTitle<\/b>).*<b>(.*)<\/b>
    

    第 1 组是“Pet Shop Boys 的新专辑”,带有这种表达方式。

    【讨论】:

    • 谢谢伊恩,我现在就试一试。
    • m.Groups [0].Value 返回整个字符串。不只是“宠物店男孩的新专辑”,你知道为什么吗?
    • m.Groups[1] 也返回错误的结果。它在流之前返回一个示例。我们可以让它匹配专辑标题后的第一个吗?
    • @Joan Venge:我在 Perl 中针对您的字符串对其进行了测试,这对我来说没问题。我需要看到更多的流来给你更好的表达。我还将回应 cmets 对您的问题所说的话:为什么要使用正则表达式?这让事情变得比他们应该做的更难。
    • 谢谢,我使用正则表达式的原因是,我只需要一个愚蠢的字符串解析器,它可以给我一个流中的值列表。你的意思是有更好的方法吗?不过,这与编译器完全不同。
    猜你喜欢
    • 2011-05-13
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2013-04-01
    • 2013-11-02
    相关资源
    最近更新 更多