[英]c# Regular Expression no match - when there should be
我正在尝试将0个或多个字母,数字和引号(“)之间的空格匹配,这些集合可以用空格隔开,也可以不使用空格,并且字符串将以关键字开头以标识要做什么与匹配的集合。
最简单的示例如下:
\\ inString = test "1" "a""3";
Regex regEx = new Regex("@(\"[0-9 a-z]*\")", RegexOptions.IgnoreCase);
Match match = regEx.Match(inStr);
比赛未成功,更何况包含3个预期结果
但是,通过http://regexhero.net进行的匹配是成功的-我使用regexhero作为其SilverLight的基础,因此正在使用.NET Regex引擎...
正则表达式设置:
正则表达式
(\"[0-9 a-z]*\")
目标字符串
test "1" "b""3"
结果
1: "1"
1: "b"
1: "3"
谁能解释我的实现有什么问题?
我希望您的正则表达式是:
Regex regEx = new Regex("(\"[0-9 a-z]*\")", RegexOptions.IgnoreCase);
或(完全相同)
Regex regEx = new Regex(@"(""[0-9 a-z]*"")", RegexOptions.IgnoreCase);
看来这个问题可能对您有帮助:
您必须更改正则表达式模式:
"@(\"[0-9 a-z]*\")"
至
@"(""[0-9 a-z]*"")"
你还需要改变
Match match = regEx.Match(inStr);
至
MatchCollection match = regEx.Matches(intstr);
因为Matches
在输入字符串中搜索所有出现的正则表达式并返回所有匹配项,但Match
在指定的输入字符串中搜索正则表达式的第一次出现
如果您想要这样的结果:
1: "1"
1: "b"
1: "3"
您需要更改为Matches
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.