c#正则表达式不匹配 - 何时应该有

时间:2016-02-09 14:19:54

标签: c# regex

我试图在引号(")之间匹配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引擎...

Regexhero设置:

正则表达式

(\"[0-9 a-z]*\")

目标字符串

test "1" "b""3"

结果

1: "1"
1: "b"
1: "3"

有人能解释我的实施有什么问题吗?

2 个答案:

答案 0 :(得分:3)

我希望你的正则表达式是:

pd.merge

或(完全相同)

Regex regEx = new Regex("(\"[0-9 a-z]*\")", RegexOptions.IgnoreCase);

看起来这个问题对你来说可能是一个富有成效的读物:

What's the use/meaning of the @ character in variable names in C#?

答案 1 :(得分:0)

您必须更改正则表达式:

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