使用Regex Constant在两个标记之间返回字符串

时间:2012-06-05 18:25:41

标签: c# regex

我试图在C#中使用

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

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

2 个答案:

答案 0 :(得分:2)

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

在C#中,这变为

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

让我知道这是否有效

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

\[BEGINTAG](.+?)\[/ENDTAG]

答案 1 :(得分:0)

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

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

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

我觉得很难读。