爲什麼下面的代碼在C#中找不到任何東西,但在我在線測試時工作正常?正則表達式在行尾過濾掉空格
Match m = Regex.Match(@"abc
cd", "^abc[ \t]*$", RegexOptions.Multiline);
我使用這個在線正則表達式測試儀:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
我希望得到「ABC」
爲什麼下面的代碼在C#中找不到任何東西,但在我在線測試時工作正常?正則表達式在行尾過濾掉空格
Match m = Regex.Match(@"abc
cd", "^abc[ \t]*$", RegexOptions.Multiline);
我使用這個在線正則表達式測試儀:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
我希望得到「ABC」
我想我知道這裏發生了什麼。在我的文本文件中,EOL是CRLF。但C#正則表達式把LF當作EOL(這是'$')。所以在我的情況下,正則表達式找不到CR並聲稱失敗。和@「^ abc [\ t \ r] * $」起作用。
如果你想獲得abc
可以使用:^abc.*$
代替。
如果你想得到所有, 你可以使用:(?s)^abc.*$
來代替。
我覺得你的問題是:[\ t]無法比擬的換行符,所以你也可以改變你的代碼以匹配這樣的新行:
Match m = Regex.Match(@"abc
cd", @"^abc[ \t\r]*$", RegexOptions.Multiline);
我瞭解你沒有捕獲的任何組所以你沒有得到任何結果。
第一次嘗試這樣的:
Debug.Print(Regex.IsMatch(@"abc
cd", "^abc[ \t]*$", RegexOptions.Multiline).ToString());
你應該得到true
,因爲有一個匹配。
那就試試這個:(注意括號 '()' 後, '^' 和前 '$')
Debug.Print(Regex.Match(@"abc
cd", "^(abc[ \t]*)$", RegexOptions.Multiline).ToString());
你應該Output Window
得到一個結果。
希望它有幫助!
我試過了。結果是「」; – leon
不同風味的正則表達式。你在哪裏在線測試它? –
這只是一個例子。我想在沒有空間的情況下獲得「abc」,假設我將組添加到了我的正則表達式中。 – leon
你需要一個'@'模式嗎? – I4V