C# 正则表达式模式匹配的内容是什么?

4

有人能解释一下这个正则表达式会检查什么吗?

Regex x = new Regex("{([^}]+)}");
5个回答

4

该程序会查找括号内包含一个或多个非右括号字符 non-}{...}。成功后,程序将{...}的内容放入第一组捕获中。

Regex x = new Regex("{([^}]+)}");
var m = x.Match("{Hello}");

string str0 = m.Groups[0].ToString(); // {Hello}
string str1 = m.Groups[1].ToString(); // Hello

组0始终是整个匹配。

var m2 = x.Match("{}");
var success = m2.Success; // false

没有固定位置,因此每个字符串可能有多个匹配...

var m2 = x.Matches("{Hello}{}{World}");
int c = m2.Count; // 2 matches. The {} wasn't a match, {Hello} and {World} were

作为一个旁注,如果您认为这是一个好的C#解析器的开始,那么您就走错路了 :-) 像 { { string str = "Hello"; } str += "x"; } 这样的表达式会使这个正则表达式混淆,所以像 { string str = "}" } 这样的表达式也一样。这是一个无堆栈的正则表达式。没有花哨的技巧。

1

如果在花括号中至少有一个字符,则它匹配花括号之间的任何内容。

花括号{}内有一个组()。该组应该至少有一个[]+符号,该符号不是闭合花括号^}


1
它匹配花括号之间的任何内容 例如 {ddhhh13233dddd} {ddd}

0

这将捕获花括号内的所有内容。

MSDN 文章 可以更详细地解释它。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接