0

这是我的程序:

 class Program
    {
        private static Regex _regex = new Regex("<span id='TotalG'>$ (?<amount>.*?)</span>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);

        static void Main(string[] args)
        {

            string text = File.ReadAllText("file.txt");

            var match = _regex.Match(text);

            var group = match.Groups["amount"];

          //  Console.ReadKey();

        }
    }

该文本确实包含以下文本:

<td align="right" bgcolor=c0c0c0 style="font-weight:bold"> <span id='TotalG'>$ 0.00</span></td>
        <td>&nbsp;</td></tr>

但命名组始终为空。知道为什么会发生这种情况吗?

4

2 回答 2

3

转义$,<>在其前添加反斜杠。

我实际上也会为命名组建议一个不同的正则表达式:

"\\<span id='TotalG'\\>\\$(?<amount>[^\\<]*)\\</span\\>"

我很确定>'s 和<'s 应该只在(括号)中被转义,但我宁愿转义东西而不是记住正则表达式规则。

于 2013-06-06T09:38:48.787 回答
0

如果您正在处理html,您可以使用Html 敏捷包的帮助

var doc = new HtmlDocument();
doc.Load("test.html");
var node = doc.DocumentNode.SelectSingleNode("//span[@id='TotalG']");
if (node != null)
{
    var temp = node.InnerText;
}
于 2013-06-06T09:44:32.170 回答