簡體   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