2

我正在尝试在 C# 中使用

 var added = Regex.Match(Text,
 "\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);

在文本字符串中返回标签 [BEGINTAG] 和 [/ENDTAG] 之间的字符串。我无法弄清楚我的正则表达式常量有什么问题。

4

2 回答 2

2

你的正则表达式很好。您只需要提取第 1 组(括号之间匹配的内容)

在 C# 中,这变成

Regex regexObj = new Regex(@"\[BEGINTAG\](.+?)\[/ENDTAG\]");
resultString = regexObj.Match(subjectString).Groups[1].Value;

让我知道这个是否奏效

另外,仅供参考,你不需要像你一样逃跑。这也很好:

\[BEGINTAG](.+?)\[/ENDTAG]
于 2012-06-05T18:28:29.040 回答
1

@一个可能的问题是您的字符串之前没有 a ,因此 C# 将\字符视为 C# 转义而不是正则表达式转义。

Buckley 的回答显示了如何为字符串添加前缀,@以便将其\作为正则表达式转义处理。在 C# 中将这种格式用于正则表达式几乎总是更好。否则你最终会得到这样的结果。

var added = Regex.Match(Text, 
    "\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);

我觉得很难读。

于 2012-06-05T18:36:41.937 回答