【发布时间】:2014-05-21 14:20:20
【问题描述】:
我是正则表达式的新手。
我要归档的是检查字符串文本是否与以下模式匹配。
"xxx(name="yyy", country="yyy")"
已编辑: xxx 可以是任意长度的字母或数字,但必须以字母开头。 yyy 可以是任意长度的任意字符。 "," 和 "country" 之间可以有零个或任意数量的空格。
例如,下面是一个有效的字符串
"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);
显然,它并不符合所有指定的规则。谁能给点提示?
【问题讨论】:
-
正则表达式字符类如
\s和\w只匹配一个字符,除非您添加修饰符。因此,在您的示例中,您正在寻找一个单词字符、一个空格等等。使用*(匹配0个或更多)和+(匹配一个或多个)等修饰符。 -
构建正则表达式的一种方法,特别是如果您刚刚开始,是从您的精确匹配字符串开始。确保匹配成功。然后开始用正则表达式替换常量值。
-
谢谢,这个建议很有帮助
标签: c# regex string pattern-matching match