2

次の正規表現があります。

([0-9]+),'(.)':([0-9]+),(L|R|'.')

これはうまく一致します:

1,'a':1,R

ただし、 aをスペースに置き換えると失敗します。

1,' ':1,R

なぜしないのですか?一致しますか?スペースは文字に分類されませんか? タブと改行を合わせたくないので\sは使えません。私も試しました:

([0-9]+),'(.| )':([0-9]+),(L|R|'.')

しかし、それも機能しません (IgnorePatternWhitespace有効にしていません)。

4

3 に答える 3

1

私はあなたが見ているものを再現することはできません:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main()
    {
        Regex regex = new Regex("([0-9]+),'(.)':([0-9]+),(L|R|'.')");
        Console.WriteLine(regex.IsMatch("1,' ':1,R"));
    }
}

「True」を出力します。

引用符の間に別の文字が含まれている可能性はありますか?印刷されない文字はありますか?テキストはどこから来ていますか?

次のように変更してみてください。

([0-9]+),'([^']+)':([0-9]+),(L|R|'.')

したがって、引用符の間で複数の文字に一致する可能性があります。

于 2009-09-09T22:23:45.593 に答える
0

.NETで試したことはありませんが、ドットは言語と実装に固有です。試す:

([0-9]+),'([.| ])':([0-9]+),(L|R|'.')
于 2009-09-09T22:24:04.500 に答える
0

単一のスペース文字に一致する\0x0020を使用します。

于 2009-09-09T22:25:35.077 に答える