正则表达式将组命名为空

时间:2013-06-06 09:36:28

标签: c# .net regex c#-4.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>

但命名组始终为空。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

通过在其前面添加反斜杠来逃离$<>

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

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

我非常确定><只能在(括号)中进行转义,但我宁愿转义内容而不是记住正则表达式规则。

答案 1 :(得分:0)

如果您正在处理html,可以使用Html agile pack

的帮助
var doc = new HtmlDocument();
doc.Load("test.html");
var node = doc.DocumentNode.SelectSingleNode("//span[@id='TotalG']");
if (node != null)
{
    var temp = node.InnerText;
}