匹配正则表达式c#中的{{string}}
本文关键字:中的 string 正则表达式 | 更新日期: 2023-09-27 18:11:59
在中,匹配两个花括号内字符串的正则表达式是什么
{{string}}
结果应该是CCD_ 1。
我必须退出两个花括号吗?
不,实际上以下操作应该很好:
"{{([^}]*)}}"
编辑:正如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 中的字符串