繁体   English   中英

C#正则表达式不匹配-应该何时存在

[英]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);

看来这个问题可能对您有帮助:

C#中变量名中@字符的用途/含义是什么?

您必须更改正则表达式模式:

"@(\"[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM