匹配正则表达式c#中的{{string}}

本文关键字:中的 string 正则表达式 | 更新日期: 2023-09-27 18:11:59

在中,匹配两个花括号内字符串的正则表达式是什么

{{string}}

结果应该是CCD_ 1。

我必须退出两个花括号吗?

匹配正则表达式c#中的{{string}}

不,实际上以下操作应该很好:

"{{([^}]*)}}"

编辑:正如dtb所指出的,对于在双括号内包含单个}的字符串,上面的表达式失败。为了处理这种情况,下面的例子会做得更好:

"{{((?:}(?!})|[^}])*)}}"

编辑2:然而,最简单的解决方案可能是:

"{{(.*?)}}"
{{string}}

:p

{{(.*)}}

只有{{}}内的数字

{{([0-9])}}

只有一些字符:

{{([a-zA-Z])}}

我相信这将是最好/最简单的正则表达式,可以专门捕获花括号的内容:

(?<={{).*?(?=}})

分解后,上面写着:

01    (?<={{)   # match AFTER two open curly brackets
02    .*?       # match anything, but BE LAZY ABOUT IT
03    (?=}})    # until there are two closing curly brackets

使用此表达式,ENTIRE匹配将是花括号的内容,并且花括号将保留在适当位置/忽略

要匹配整个花括号表达式,请使用以下命令:

01    {{        # match two open curly brackets
02    .*?       # match anything, but BE LAZY ABOUT IT
03    }}        # match two closing curly brackets

如果您希望在大括号内支持多行,请在第02行的部分中使用['s'S]*?而不是.*?,或者为正则表达式解析器指定"单行"选项(Java中的DOTALL等…(。

它不会拒绝像some text {{{inside}}} other test这样的实例,并且可能会产生不希望的结果——如果可能的话,请要求使用更强的表达式,并指定应该匹配和不应该匹配的几种情况。

这应该有效:

resultString = Regex.Match(subjectString, @"^'{'{(.*?)'}'}$").Groups[1].Value;
        string strRegex = @"{{(?<String>'w+)}}";
        Regex myRegex = new Regex(strRegex);
        string strTargetString = @"'n{{string}}";
       var match = myRegex.Match(strTargetString);
       string str = match.Groups["String"].Value;

str变量将是bracets 中的字符串