之间返回字符串我试图使用C#两个标签
var added = Regex.Match(Text,
"\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);
返回标签[BEGINTAG]和[/ ENDTAG]文本字符串之间的字符串。我无法弄清楚我的正则表达式常量有什么问题。
之间返回字符串我试图使用C#两个标签
var added = Regex.Match(Text,
"\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);
返回标签[BEGINTAG]和[/ ENDTAG]文本字符串之间的字符串。我无法弄清楚我的正则表达式常量有什么问题。
你的正则表达式很好。你只需要提取1组(你括号之间不匹配的东西)
在C#这成为
Regex regexObj = new Regex(@"\[BEGINTAG\](.+?)\[/ENDTAG\]");
resultString = regexObj.Match(subjectString).Groups[1].Value;
让我知道这是否正常工作
此外,仅供参考,您不需要和你一样逃脱。这也不错:
\[BEGINTAG](.+?)\[/ENDTAG]
一个可能的问题是,你没有你的字符串前@
,所以C#是治疗\
字符作为C#逃逸,而不是正则表达式逃逸。
Buckley的回答显示如何用@
作为字符串的前缀,以便将\
作为正则表达式转义处理。在C#中使用这种格式的正则表达式几乎总是更好。否则,你会得到这样的结果。
var added = Regex.Match(Text,
"\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);
我发现很难读。
如果您对性能感兴趣,很高兴知道\ [BEGINTAG]([^ [] *)\ [/ ENDTAG]不需要任何回溯,预计效果会更好。 – buckley
谢谢,工作完美。 – Subliminy