入力で:
"a[href*=\"test\"]"
次のjQueryセレクターからタグ名を一致させようとしています:
Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;
問題は、A から z までではなく、左ブラケットを収集することです。
tagName = "a[href"
式で指定されていない場合、ブラケットを収集するのはなぜですか?
入力で:
"a[href*=\"test\"]"
次のjQueryセレクターからタグ名を一致させようとしています:
Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;
問題は、A から z までではなく、左ブラケットを収集することです。
tagName = "a[href"
式で指定されていない場合、ブラケットを収集するのはなぜですか?
これだからね
[A-z]
ASCII 'A' から ASCII 'z' までの文字範囲を作成します。Z と a の間に文字以外の文字があり、そのうちの 1 つが[
文字です。代わりに使用してください:
[A-Za-z]
からの範囲A-Z
とからの範囲を一致させますa-z
が、その間にある文字は一致させません。詳細を確認するためにASCII テーブルを見ることができますが、要約すると、文字は (数字の ASCII 順で) 次のようになります。
A, B, ..., Y, Z, [, \, ], ^, _, `, a, b, c, ..., z
このようなものをテストするには、regexpal のようなツールを試す必要があります。これがあなたの例です:
http://regexpal.com/?flags=g®ex= ^%5BA-z%5D%2B&input=a%5Bhref*%3D%5C%22test%5C%22%5D
私にとって奇妙なのは、小文字の「z」です。何らかの理由で、ブラケットが通過できるようになっています。
これを試して:
^[^\[]+
http://regexpal.com/?flags=g®ex= ^%5B^%5C%5B%5D%2B&input=a%5Bhref*%3D%5C%22test%5C%22%5D