我是正则表达的新手。
我想要的是检查字符串文本是否符合以下模式。
"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);
显然,它并没有违反所有指定的规则。有人可以提一些暗示吗?
答案 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