文字クラス (正規表現)

文字クラス (正規表現)

[20] 正規表現における文字クラスは、 複数種の文字のいずれかに一致すればよいことを表します。

正規表現に限らない文字クラスについては文字の集合

POSIX 式文字クラス [: ... :]

[16] Lesson1 Step2 検索条件を設定しよう ~簡易表現と正規表現~ - 超漢字ウェブサイト ( 版) http://www.chokanji.com/knowhow/vol01_02.html

日本基本、日本補助、GT、大漢和、中国、韓国、台湾、各国、JIS第1第2、JIS第3、JIS第4が使用できます。

文字クラスの文字クラス

空の文字クラス

[7] Perl では、 [] や [^] のような文字クラスはエラーになります。

[8] ES3 では、空の文字クラスが認められています。 FirefoxSafariChrome もそれに従っているようです。 [] は何にも一致しません。 [^] はどんな文字にも一致します。

[9] Opera 9.61 ではなぜか逆になっています。 [^] は何にも一致しません。 [] はどんな文字にも一致します。

[10] WinIE 7 ではエラーになります。

[11] []x]

ES3, Firefox, Opera, Safari, Chrome では空の文字クラス + x + ] と解釈されるらしく、何も一致しません。

WinIE 7Perl では ] と x が含まれる文字クラスとして解釈されるようです。

http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0D%0Adocument.write%20(%22%5D%22.match(%2F%5E%5B%5Dx%5D%24%2F)%3F1%3A0)%3B%0D%0A%3C%2Fscript%3E

文字クラス中のエスケープ

エスケープの項を参照。

文字クラス中の範囲と文字クラスを表すエスケープ

[12] ES3 (15.10.2.15 の定義や 15.10.2.16 の non-normative note) によれば、 [\w-\d] のように範囲の一方または両方が文字クラスを表すエスケープの場合、 SyntaxError になるはずです。ですが、実際にはどのブラウザでも \w、文字 -、 \d のようにばらばらに処理されます。

[13] ちなみに Perl でもブラウザと同じみたいです。

[14] [\s--?] のような範囲は ES3 的には構文エラーになるはずですが、 ブラウザではどれも、 \s と - から ? までになります。

[15] Perl でもブラウザと同じみたいです。

http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20(%224%22.match(%2F%5E%5B%5Cw--%3F%5D%24%2F)%3F1%3A0)%3B%0A%3C%2Fscript%3E

Unicode 文字クラス

[22] Unicode正規表現には () () クラス (Character Class) があります。 構文と意味が定められています。 ただし規定ではなく、既存の構文に合わせたものとして良いとされています。 >>21

\p

\p

メモ

[17] Perlの正規表現のバグ? (前編) - muddy brown thang ( ( 版)) http://d.hatena.ne.jp/moriyoshi/20090315/1237103809

[18] perlre - search.cpan.org ( 版) http://search.cpan.org/dist/perl/pod/perlre.pod#Character_Classes_and_other_Special_Escapes

[19] perlrecharclass - search.cpan.org ( 版) http://search.cpan.org/dist/perl/pod/perlrecharclass.pod

[25] GitHub - tc39/proposal-regexp-v-flag: UTS18 set notation in regular expressions, https://github.com/tc39/proposal-regexp-v-flag