You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#正则表达式(方括号)使用问题求助

解决C#正则提取HTML文本时的方括号使用问题

嘿,我来帮你捋清楚这个问题——你遇到的其实不是方括号本身的问题,而是C#的字符串转义规则导致正则表达式没被正确解析。

问题出在哪?

在regex101里写正则时,你不用考虑编程语言的字符串转义,但在C#里就不一样了:如果你直接写"right;">[0-9]+",编译器会把中间的双引号当成字符串的结束标记,要么直接报语法错误,要么正则被截断成right;,自然匹配不到目标内容。

两种正确的写法,任你选

1. 给双引号加转义符

把正则里的双引号用\"转义,让C#知道这是正则的一部分,不是字符串边界:

string regexPattern = "\"right;\">[0-9]+";
Match matchResult = Regex.Match(yourHtmlString, regexPattern);
if (matchResult.Success)
{
    string fullMatch = matchResult.Value; // 得到 "right;">672"
}

2. 用逐字字符串(更推荐)

在字符串前面加@,C#就会忽略所有转义规则,直接把你写的内容当作正则表达式,和你在regex101里写的格式完全一致:

string regexPattern = @"right;">[0-9]+";
Match matchResult = Regex.Match(yourHtmlString, regexPattern);
if (matchResult.Success)
{
    // 处理匹配到的内容
}

额外小技巧:直接提取数字

如果你最终要的是672而不是整个right;">672,可以给数字部分加个捕获组,直接拿到目标值:

string regexPattern = @"right;">([0-9]+)";
Match matchResult = Regex.Match(yourHtmlString, regexPattern);
if (matchResult.Success)
{
    string number = matchResult.Groups[1].Value; // 直接得到 "672"
}

最后提个醒

正则对付简单HTML还行,但如果HTML结构变复杂(比如标签里多了空格、属性顺序变了),用专门的HTML解析库会靠谱得多,毕竟正则不是为解析HTML设计的~

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:02:09