正则表达式匹配模式的字符串

时间:2014-05-21 14:20:21

标签: c# regex string pattern-matching match

我是正则表达的新手。

我想要的是检查字符串文本是否符合以下模式。

"xxx(name="yyy", country="yyy")"

编辑: xxx可以是任何长度的字母或数字,但必须以字母开头。 yyy可以是任何长度的任何字符。 ","之间可以有零个或任意数量的空格。和"国家"。

例如,以下是有效的字符串

"TargetVal(name="White House", country="US")"

以下字符串无效

"TargetVal(name="White House", country="US")+546+!!!"
"343TargetVal(name="White House", country="US")"
"!TargetVal(name="White House", country="US")"
"CenterVal(name="Green House",789808 country="US")"
"CenterVal(name="Green House", country="US", dfjl)"
"OuterVal(name=Green House, country="US")"

以下是我迄今为止在C#中所做的工作

var formula = @"TargetVal(name=""White House"", country=""US"")";
var pattern = @"\w\(name=""\w"",\sccy=""\w""\)";
ismatching= Regex.IsMatch(formula, pattern, RegexOptions.IgnoreCase);

显然,它并没有违反所有指定的规则。有人可以提一些暗示吗?

2 个答案:

答案 0 :(得分:0)

尝试var pattern = "^[a-zA-Z][a-zA-Z0-9 ]+\\(name=\"[a-zA-Z][a-zA-Z0-9 ]+\",\\s*country=\"[a-zA-Z][a-zA-Z0-9 ]+\"\\)$";

我假设您的xxx不仅存在于字母和数字之外,还可能包含空格(因为White House确实包含空格)。

答案 1 :(得分:0)

您可以使用以下正则表达式。

var rgx = new Regex(@"(?i)^[a-z][a-z0-9]+\(name="".*?"",\s*country="".*?""\)$");

参见 Demo