0

次のコードが 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」を取得することを期待しています

4

4 に答える 4

0

私はここで何が起こっているか知っていると思います。私のテキスト ファイルでは、EOL は CRLF です。しかし、C# 正規表現は LF を EOL ('$') として扱います。したがって、私の場合、正規表現は CR を見つけられず、失敗を主張できません。そして @"^abc[ \t\r]*$" は機能します。

于 2013-08-28T13:04:25.590 に答える
0

私が理解しているように、あなたはグループをキャプチャしていないため、結果として何も得られません。

最初にこれを試してください:

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

それが役に立てば幸い!

于 2013-08-28T09:02:59.637 に答える