这是我的计划:
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> </td></tr>
但命名组始终为空。知道为什么会这样吗?
答案 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;
}