【问题标题】:Regex get string between two strings [duplicate]正则表达式获取两个字符串之间的字符串[重复]
【发布时间】:2016-11-22 21:36:59
【问题描述】:

我正在使用HTMLAgilityPack 获取一些类,然后从这些类的innerText 中获取Regex 匹配项的集合。

我的字符串如下所示:

somestring<b>Test:<br>
EUR/USD - &quot;Expect for <i>PRICE BREAKOUT</i>&quot;<br>
Sell : 1.06809<br>
Target : 1.06309<br>
Stop Loss : 1.07309</b><br>rest of html

我的正则表达式看起来像这样

MatchCollection matches = Regex.Matches(sString, @"<b>(.*?)</b>");

但是没有匹配。通常在文本中应该有 5 个结果(上面的字符串会重复,但略有变化)。 一定有一些特殊字符我错过了,但我似乎无法弄清楚。

请在这里帮我一把。我知道这是一个菜鸟问题,但对我来说有点棘手。

提前谢谢你

【问题讨论】:

  • MatchCollection matches = Regex.Matches(sString, @"&lt;b&gt;(.*?)&lt;/b&gt;", RegexOptions.Singleline);?
  • 当您通过敏捷包获得 的值时,为什么要使用正则表达式?
  • @mybirthname 因为这是我第一次使用它。我很想去,但我用它的那一步对我来说已经太多了。使用 html 字符串对我来说更容易。如果你能给我举个例子,我会很高兴。谢谢两位的帮助
  • @JohnP。只是谷歌一些例子,如果你有问题,你可以回答另一个问题。我不知道你的上下文给你合适的例子。 var result = doc.DocumentNode.SelectNodes("b"); 这将占用您文档中的所有 b 节点。

标签: c# html regex string


【解决方案1】:

您需要指定SingleLine 标志以忽略换行符并转义正斜杠。

MatchCollection matches = Regex.Matches(sString, @"<b>(.*)<\/b>", RegexOptions.Singleline);

见:https://regex101.com/r/zK1vG9/1

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多