我试图在C#中使用
var added = Regex.Match(Text,
"\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);
在文本字符串中返回标记[BEGINTAG]和[/ ENDTAG]之间的字符串。我无法弄清楚我的正则表达式常数有什么问题。
答案 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);
我觉得很难读。