この正規表現がスペースと一致しないのはなぜですか?
-
05-07-2019 - |
質問
次の正規表現があります:
([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 を使用します。
所属していません StackOverflow