使用正则表达式常量返回两个标签之间的字符串

本文关键字:两个 标签 之间 字符串 正则表达式 常量 返回 | 更新日期: 2023-09-27 18:36:23

我正在尝试在 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);

我觉得很难读。