我正在尝试在 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]
@
一个可能的问题是您的字符串之前没有 a ,因此 C# 将\
字符视为 C# 转义而不是正则表达式转义。
Buckley 的回答显示了如何为字符串添加前缀,@
以便将其\
作为正则表达式转义处理。在 C# 中将这种格式用于正则表达式几乎总是更好。否则你最终会得到这样的结果。
var added = Regex.Match(Text,
"\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);
我觉得很难读。