質問

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

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

これはこれで問題ありません:

1,'a':1,R

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

1,' ':1,R

なぜと一致しないのですか?スペースはキャラクターとして分類されていませんか?タブと改行を一致させたくないため、 \ s は使用できません。私も試しました:

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

しかし、これも機能しません(および IgnorePatternWhitespace を有効にしていません)。

役に立ちましたか?

解決

見ているものを再現できません:

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|'.')

そのため、引用符の間の複数の文字に一致します。

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top