正規表現とは
正規表現とは特定のパターンに一致する文字列を一つのパターンで表現する方法のであり、いくつかの文字列を一つの文字列で表現することができます。
通常文章の中から文字列を検索するとき指定した文字列に完全一致する文字列しか抽出できませんが、正規表現を使うと文字列の中から特定のパターンに一致する文字列を抽出することができるようになります。
例えば文章の中からWindows 7、Windows 8、Windows 10、Windows 11を検索したい場合、通常の検索であれば4回に分けて検索しなければなりませんが、正規表現を使うとWindows (7|8|10|11)の文字列だけですべて検索するといった曖昧検索ができるようになります。
このようにすべてのパターンを書き出せるくらいの検索であれば正規表現は必要ないかもしれませんが、文字列の中から郵便番号を抽出したいとかなるとすべてのパターン(000-0000、000-0001、000-0002、…、999-9999)を検索するのは大変です。
郵便番号は数字3桁-数字4桁で表され、これを正規表現を使って表すと\d{3}-\d{4}と書くことができます。\dは正規表現の中で特別な意味を持つメタ文字と呼ばれるもので、\d{n}でn桁の数字を表現することが出きます。この検索では数字3桁-数字4桁のパターンに一致しますが、厳密ではなく存在しない郵便番号が含まれることには注意してください。
特殊文字
メタ文字
メタ文字とは正規表現において特別な意味を持つ文字のことです。
メタ文字には角括弧外を除きパターン中のどこでも使用できる文字と、角括弧内でのみ使用できる2種類があります。
以下は角括弧外で使えるメタ文字です。
| メタ文字 | 説明 |
|---|---|
| \ | メタ文字を通常の文字として扱う際、その文字の前に\(バックスラッシュ)を付けます。 |
| ^ | 行の先頭 |
| $ | 行の末尾 |
| . | 改行文字(\n、\r、\u2028、\u2029)を除く任意の一文字。\nはLine Feedでカーソルを次の行に移動、\rはCarriage Returnでカーソルを行の先頭に移動することを意味しています。\u2028は行分割子、\u2029は段落分割子で、それぞれテキスト内で行・段落を分割する際に使われます。 |
| [ | 文字クラス定義の開始 |
| ] | 文字クラス定義の終了 |
| | | グループ内のいずれかに一致 |
| ( | サブパターンの開始 |
| ) | サブパターンの終了 |
| ? | サブパターンの拡張、1回未満の一致、最短マッチ |
| * | 0回以上の繰り返し |
| + | 1回以上の繰り返し |
| { | 最小/最大を指定する量指定子の開始 |
| } | 最小/最大を指定する量指定子の終了 |
パターン中の角括弧で囲まれた部分を文字クラスといい、文字クラスで使えるメタ文字は以下のとおりです。
| メタ文字 | 説明 |
|---|---|
| \ | メタ文字を通常の文字として扱う際、その文字の前に\(バックスラッシュ)を付けます。 |
| ^ | 文字クラス内の先頭に記述したときのみ否定を表します。 |
| - | 文字の範囲を指定。 |
これらの文字を通常の文字として使う場合はメタ文字の直前に\(バックスラッシュ)を付けてエスケープする必要があります。
| メタ文字 | エスケープ |
|---|---|
| \ | \\ |
| ^ | \^ |
| $ | \$ |
| . | \. |
| [ | \[ |
| ] | \] |
| | | \| |
| ( | \{ |
| ) | \) |
| ? | \? |
| * | \* |
| + | \+ |
| { | \{ |
| } | \} |
文字クラス
角括弧([ ])で囲まれた一連の文字のいずれかにマッチするパターンを定義します。
角括弧内にはUnicode文字を指定することができます。Unicode文字列の対応表はhttps://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFFを参照。
\d,\D,\w,\W,\s,\Sは文字の集合を表すエスケープシーケンスで、文字クラスエスケープと呼びます。文字クラスエスケープは事前に定義された文字の集合を表していて、文字クラスで書き換えることも可能です。
| 文字 | 意味 |
|---|---|
| [abc] | 文字クラス。角括弧内のいずれかの文字に一致します。-(ハイフン)で範囲を指定することができますが、-(ハイフン)が角括弧内の先頭、もしくは末尾に指定した場合、範囲としてではなく文字のハイフンとして扱われます。 |
| [^abc] | 角括弧内のいずれかの文字以外。角括弧内に囲まれていないすべての文字に一致します。-(ハイフン)が^(キャレット)の直後もしくは末尾に指定した場合、範囲としてではなく文字のハイフンとして扱われます。 |
| . | 改行文字(\n、\r、\u2028、\u2029)を除く任意の一文字。文字クラス内では.(ピリオド)として扱われます。 |
| \d | 半角アラビア数字に一致します。文字クラスの表現では[0-9]に同義。 |
| \D | 半角アラビア数字以外に一致します。文字クラスでの表現では[^\d]もしくは[^0-9]に同義。 |
| \w | アンダーバーを含む半角英数字に一致します。文字クラスの表現では[0-9A-Za-z_]に同義。 |
| \W | アンダーバーを含む半角英数字以外に一致します。文字クラスの表現では[^\w]もしくは[^0-9A-Za-z_]に同義。 |
| \s | 空白、タブ、改ページ、改行、その他の Unicode 空白文字などのホワイトスペース1文字に一致します。文字クラスの表現では[\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]に同義。 |
| \S | 空白、タブ、改ページ、改行、その他の Unicode 空白文字などのホワイトスペース1文字以外に一致します。文字クラスの表現では[^\s]もしくは[^\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]に同義。 |
| \t | 水平タブに一致します。 |
| \r | 復帰文字に一致します。 |
| \n | 行送り文字に一致します。 |
| \v | 垂直タブに一致します。 |
| \f | 改ページに一致します。 |
| [\b] | 後退文字に一致します。 |
| \0 | NUL文字に一致します。 |
| \cX | キャレット記法を使用した制御文字に一致します。XにはAからZの文字が入ります。制御文字をキャレット文字で表現する方法はhttps://ja.m.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97を参照。例えば\r\nは\rが^M、\nが^Jなので\cM\cJとなります。 |
| \xhh | 2桁の16進数からなる文字コードhhに対応するASCIIコードの文字に一致します。文字コード表はASCIIコード表を参照。 |
| \uxxxx | 4桁の16進数からなる文字コードxxxxに対応するUnicode(UTF-16)の文字に一致します。文字コード表はhttps://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFFを参照。 |
| \u{hhhh} |
U+hhhhまたはU+hhhhhに対応するUnicode文字に一致します。1桁から6桁の文字コードを指定することができ、特にサロゲートペア文字を扱うときに便利です。 |
| \p{UnicodeProperty} |
Unicode文字プロパティに指定された一連の文字に一致します。 |
| \ | \(バックスラッシュ)はエスケープシーケンス、もしくはバックスラッシュの後に続く文字のエスケープ処理するときに使います。 |
| x|y | 論理和:xまたはyに一致します。両方のパターンに一致した場合、左側のパターンを優先してマッチします。 |
論理和で特に注意が必要なのは右側のパターンに左側のパターンが含まれるときです。例えばパターンにapple|apples、検索文字列にapplesを指定したとき、論理和は左側から一致を確認していくのでapplesではなくappleにマッチしてしまいます。
apple|apples対策としては論理和の左側から文字数の多い順に並べる、もしくは\bで囲むなどがあります。
apples|apple\b(apple|apples)\bアサーション
アサーションは特定の条件を満たす位置にマッチするためのパターンです。
| 文字 | 意味 |
|---|---|
| ^ | 行の先頭に一致します。 |
| $ | 行の末尾に一致します。 |
| \b | 単語の区切りに一致します。単語構成文字と後に続く非単語構成文字の間、もしくは非単語構成文字と後に続く単語構成文字の間です。 |
| \B | 単語の区切り以外に一致します。一致した位置の前後が同じ種類の文字である必要があります。 |
先読み・後読み
先読み・後読みで記述した場合、文字列ではなく位置にマッチします。
例えば都道府県名の一覧から京都を検索した場合、東"京都"にもマッチしてしまいますが、以下のように後読みを使えば東京都を除いた京都のみにマッチさせることができます。
(?<!東)京都以下"pattern"は任意の文字列または正規表現。
| メタ文字 | 意味 |
|---|---|
| (?=pattern) | 肯定先読み:"pattern"という文字列にマッチした 直前の位置 |
| (?!pattern) | 否定先読み:"pattern"という文字列にマッチしない直前の位置 |
| (?<=pattern) | 肯定後読み:"pattern"という文字列にマッチした直後の位置 |
| (?<!pattern) | 否定後読み:"pattern"という文字列にマッチしない直後の位置 |
肯定先読み
東京都(?=北区)北区が後に続く東京都にマッチします。
否定先読み
東京都(?!北区)北区が続かない東京都にマッチします。
肯定後読み
(?<=東京都)北区東京都に続く北区にマッチします。
否定後読み
(?<!東京都)北区東京都に続かない北区にマッチします。
数量詞
特定のパターンがどれだけ繰り返されるかを指定するために使用します。
| 文字 | 意味 |
|---|---|
| x* | 直前の文字xの0回以上の繰り返しに一致します。 |
| x+ | 直前の文字xの1回以上の繰り返しに一致します。 |
| x? | 直前の文字xの0回もしくは1回の出現に一致します。 |
| x{n} | 直前の文字xがn回出現するものに一致します。 |
| x{n,} | 直前の文字xがn回以上の出現に一致します。 |
| x{n,m} | 直前の文字xがn回以上m回以下の出現に一致します。 |
| x*? x+? x?? x{n}? x{n,}? x{n,m}? |
デフォルトでは最長マッチが行われますが、数量詞の直後に?を指定すると最短マッチになります。 |
?は直前の文字が0回、もしくは1回の出現に一致します。例えば色の英語であるcolor・colourは以下のように表すことができます。uはあってもなくても良いのでu?と記述することでcolor・colourのどちらにもマッチします。
colou?rこれはcolor|colourと記述したときと同じ結果を返します。
グループと後方参照
パターンを括弧で囲むことでグループ化したり後方参照することができるようになります。
| 文字 | 意味 |
|---|---|
| (x) | キャプチャグループ:括弧(( ))で囲まれた部分にマッチした文字列を取得します。 |
| (?<Name>x) | 名前付きキャプチャグループ:キャプチャグループに名前を付けることで、その名前で一致した部分にアクセスできるようにします。 |
| (?:x) | 非キャプチャグループ:キャプチャを行わずにグルーピングのみを行います。キャプチャ結果が必要ない場合に使います。 |
| \n | n番目の括弧に一致した部分の後方参照を行います。 |
| \k<Name> | Nameで指定された名前付きキャプチャグループに一致する最後の部分文字列の後方参照を行います。 |
例えば(\d{4})-(\d{2})-(\d{2})という正規表現で年-月-日の形式の日付にマッチさせた場合、\1は年、\2は月、\3は日の値が代入され、後方参照を行うことができます。
非キャプチャグループはキャプチャを行わずにグループ化のみ行いたい場合に使います。例えば2022年か2024年にマッチさせたい場合、括弧を使い(202(2|4))と書くことが出来ますが、年・月・日3つのキャプチャグループを作成したいのに、必要のない2、4の箇所もキャプチャグループとして作成されてしまいます。結果を見ても2024、07、29の他に4がキャプチャされているのがわかります。
DIM Matches = reExecute("2024-07-29", "(202(2|4))-(\d{2})-(\d{2})")
WITH Matches.Item(0)
FOR i = 0 TO .SubMatches.Count - 1
PRINT i + "<#TAB>" + .SubMatches(i)
NEXT
ENDWITH- 結果
0 2024 1 4 2 07 3 29
必要のないキャプチャグループを作成するときは(?:x)という形式で記述することで、非キャプチャグループとすることができます。(202(2|4))の箇所を(202(?:2|4))を書き換えることで2022、2024の部分はキャプチャされますが、2、4の部分はキャプチャを行わずにグルーピングのみを行うことが出来るようになります。
結果を見ても年・月・日の部分のみ抽出することができているのがわかると思います。
DIM Matches = reExecute("2024-07-29", "(202(?:2|4))-(\d{2})-(\d{2})")
WITH Matches.Item(0)
FOR i = 0 TO .SubMatches.Count - 1
PRINT i + "<#TAB>" + .SubMatches(i)
NEXT
ENDWITH- 結果
0 2024 1 07 2 29
制御文字
| キャレット記法 | 10進数 | 16進数 | 名称 | エスケープ |
|---|---|---|---|---|
| ^@ | 00 | 00 | 空白 | \0 |
| ^A | 01 | 01 | ヘッディング開始 | |
| ^B | 02 | 02 | テキスト開始 | |
| ^C | 03 | 03 | テキスト終結 | |
| ^D | 04 | 04 | 伝送終了 | |
| ^E | 05 | 05 | 問い合わせ | |
| ^F | 06 | 06 | 肯定応答 | |
| ^G | 07 | 07 | ベル | \a |
| ^H | 08 | 08 | 後退 | \b |
| ^I | 09 | 09 | 水平タブ | \t |
| ^J | 10 | 0A | 改行 | \n |
| ^K | 11 | 0B | 垂直タブ | \v |
| ^L | 12 | 0C | 書式送り | \f |
| ^M | 13 | 0D | 復帰 | \r |
| ^N | 14 | 0E | シフトアウト | |
| ^O | 15 | 0F | シフトイン | |
| ^P | 16 | 10 | 伝送制御拡張 | |
| ^Q | 17 | 11 | 装置制御1 | |
| ^R | 18 | 12 | 装置制御2 | |
| ^S | 19 | 13 | 装置制御3 | |
| ^T | 20 | 14 | 装置制御4 | |
| ^U | 21 | 15 | 否定応答 | |
| ^V | 22 | 16 | 同期信号 | |
| ^W | 23 | 17 | 伝送ブロック終結 | |
| ^X | 24 | 18 | 取り消し | |
| ^Y | 25 | 19 | 媒体終結 | |
| ^Z | 26 | 1A | 置換 | |
| ^[ | 27 | 1B | 拡張 | |
| ^\ | 28 | 1C | ファイル分離 | |
| ^] | 29 | 1D | グループ分離 | |
| ^^ | 30 | 1E | レコード分離 | |
| ^_ | 31 | 1F | ユニット分離 | |
| ^? | 127 | 7F | 抹消 |
ASCII
| 下位4ビット | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f | ||
| 上 位 4 ビ ッ ト | 00 | NULL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | TAB | LF | VT | FF | CR | SO | SI |
| 10 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US | |
| 20 | SPC | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
| 30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? | |
| 40 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
| 50 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | ¥ | ] | ^ | _ | |
| 60 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | |
| 70 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ‾ | DEL | |
Unicode文字プロパティ
Unicode文字プロパティとはUnicodeにおいて各文字に割り当てられた属性のことで、文字の分類や特性を示すために使用されます。
正規表現で数字やアルファベットにマッチさせたい場合、数字やアルファベットは数が少なくて全体を把握しやすいので[0-9]、[A-Za-z]のように記述しても問題ありませんが、日本語のひらがなや漢字などは複雑な範囲指定が必要のため文字クラスで指定するのは適していません。例えば、ひらがなにマッチさせたいときに文字クラスで[あ-ん]と記述した場合あより前の文字コードにあるぁにはマッチしません。正しくひらがなにマッチさせるには[ぁ-ん]と記述する必要があります。またカタカナにマッチさせる場合は[ァ-ヴ]という文字クラスになります。
数字は0から9、アルファベットはAからZと連続した文字列なのでわかりやすいですが、ひらがなやカタカナ・漢字を文字クラスで書くのは適していません。
Unicode文字プロパティではこのようによく使われる範囲や同じ言語、文字コードのブロック毎に名前を定義していて、文字クラスを使わずに範囲を指定することができます。例えばひらがなは\p{Hiragana}、カタカナは\p{Katakana}、漢字は\p{Han}と書き換えることができ、文字クラスを使うよりも見た目で何を表しているかもわかりやすく指定範囲のミスも減らすことができます。
| 文字クラス | Unicode文字プロパティ | 意味 | |
|---|---|---|---|
| General Category | Script | ||
| [0-9] | Nd | \p{Number} | 数字 |
| [A-Z] | Lu | アルファベット大文字 | |
| [a-z] | Ll | アルファベット小文字 | |
| [A-Za-z] | Lu、Lo | アルファベット | |
| [0-9A-Za-z] | Nd、Lu、Lo | 英数字 | |
| [ぁ-ん] | Lo | \p{Hiragana} | ひらがな |
| [ァ-ヴ] | Lo | \p{Katakana} | カタカナ |
| [ヲ-゚] | Lo | 半角カタカナ | |
| [亜-熙] | Lo | 漢字(Shift-JIS) | |
| [一-龠] | Lo | 漢字(Unicode) | |
指定した文字の一般カテゴリはAnalyse string toolで調べることができます。
- 一般カテゴリ(General Category)
- Unicode文字を大まかに分類するためのプロパティ。すべての文字はいずれかのプロパティを持ち、プロパティは1字または2字で表現されます。1文字目は大分類、2文字目は小分類を表しています。一般的なカテゴリ(文字、数字、記号など)
- スクリプト(Script)
- 文字が属する書記体系(ラテン文字、キリル文字、漢字など)
- ブロック(Block)
- 文字が属するUnicodeブロック(基本ラテン文字、ひらがな、漢字など)
Unicode文字プロパティを使った正規表現は以下のように記述します。\pはUnicodePropertyに含まれている文字列、\Pは含まれていない文字列にマッチします。
\p{UnicodeProperty}
\P{UnicodeProperty}| 文字 | Unicode | 名称 | General Category | Script | Block |
|---|---|---|---|---|---|
| あ | U+3042 | HIRAGANA LETTER A | Lo | Hiragana | Hiragana |
| 1 | U+0031 | DIGIT ONE | Nd | Common | Basic Latin |
| A | U+FF21 | FULLWIDTH LATIN CAPITAL LETTER A | Lo | Common | Halfwidth and Fullwidth Forms |
| A | U+0041 | LATIN CAPITAL LETTER A | Lu | Latin | Basic Latin |
| 亜 | U+4E9C | CJK UNIFIED IDEOGRAPH-131364 | Lo | Han | CJK Unified Ideographs |
指定したUnicode文字プロパティにマッチさせるにはUnicodePropertyにGeneral CategoryもしくはScriptを指定します。
\p{カテゴリ名}
\p{Isカテゴリ名}
\p{General_Category=カテゴリ名}
\p{Isスクリプト名}
\p{Script=スクリプト名}
\p{Inブロック名}
\p{Block=ブロック名}一般カテゴリ
一般カテゴリとは文字を大まかに分類するためのプロパティです。すべての文字はいずれかのプロパティを持っていて、プロパティは大分類を表す単語(Letter、Mark、Number、Punctuation、Symbol、Separator、Other)もしくは略した1字で指定するか、小分類と組み合わせる場合は2字で指定します。
以下の表に示すのが一般カテゴリで指定できるプロパティで、大文字1字で書かれたものは大分類の略語で、括弧内が大分類を表す単語です。例えばアルファベットを表すプロパティはLetter、Lのどちらでも指定可能です。
アルファベット2字で書かれたプロパティは大分類と小分類を組み合わせたもので、文字をより細かく絞ることができます。例えばプロパティNdは数字を表すプロパティNの大分類よりも10進数字に限定することができます。
https://gotellilab.github.io/Bio381/Scripts/Feb07/RegularExpressionsTutorial.pdf| プロパティ | 名前 | 文字数 |
|---|---|---|
| C(Other) | その他 | |
| Cc(Control) | コントロール文字(Control) | 65 |
| Cf(Format) | 非可視整形用文字(Format) | 161 |
| Co(Private_Use) | 指摘利用領域(Private Use) | 0 |
| Cs(Surrogate) | サロゲート(Surrrogate) | 0 |
| Cn(Unassigned) | ||
| L(Letter) | アルファベット | |
| Ll(Lowercase_Letter) | 小文字アルファベット(Lowercase Letter) | 2,155 |
| Lm(Modifier_Letter) | 疑似文字(Modifier Letter) | 260 |
| Lo(Other_Letter) | その他の文字(Other Letter) | 127,004 |
| Lt(Titlecase_Letter) | タイトル文字(Titlecase Letter) | 31 |
| Lu(Uppercase_Letter) | 大文字アルファベット(Uppercase Letter) | 1,791 |
| M(Mark) | 記号 | |
| Mc(Spacing_Combining_Mark) | 修飾文字(Spacing Mark) | 443 |
| Me(Enclosing_Mark) | 他の文字を囲むための文字(Enclosing Mark) | 13 |
| Mn(Non_Spacing_Mark) | 他の文字を修飾するための文字(Nonspacing Mark) | 1,839 |
| N(Number) | 数字 | |
| Nd(Decimal_Digit_Number) | 10進数字(Decimal Number) | 650 |
| Nl(Letter_Number) | 数値を表す文字(Letter Number) | 236 |
| No(Other_Number) | その他の数字(Other Number) | 895 |
| P(Punctuation) | 句読記号 | |
| Pc(Connector_Punctuation) | 連結用句読記号(Connector Punctuation) | 10 |
| Pd(Dash_Punctuation) | ダッシュ(Dash Punctuation) | 25 |
| Pe(Close_Punctuation) | 閉じ句読記号(Close Punctuation) | 73 |
| Pf(Final_Punctuation) | 末尾句読記号(Final Punctuation) | 10 |
| Pi(Initial_Punctuation) | 先頭句読記号(Initial Punctuation) | 12 |
| Po(Other_Punctuation) | その他の句読記号(Other Punctuation) | 593 |
| Ps(Open_Punctuation) | 開き句読記号(Open Punctuation) | 75 |
| S(Symbol) | 記号 | |
| Sc(Currency_Symbol) | 通貨記号(Currency Symbol) | 62 |
| Sk(Modifier_Symbol) | 合わせ文字(Modifier Symbol) | 123 |
| Sm(Math_Symbol) | 数学記号(Math Symbol) | 948 |
| So(Other_Symbol) | その他の記号(Other Symbol) | 6,431 |
| Z(Separator) | 区切り文字 | |
| Zl(Line_Separator) | 行区切り文字(Line Separator) | 1 |
| Zp(Paragraph_Separator) | 段落区切り文字(Paragraph Separator) | 1 |
| Zs(Space_Separator) | 空白文字(Space Separator) | 17 |
スクリプト
スクリプトは文字が属する書記体系によって分類します。この中でよく使われるものはひらがな(Hiragana)、カタカナ(Katakana)、漢字(Han)、ラテン文字(Latin)です。括弧内はスクリプト名を表しています。
| スクリプト | 名前 | 文字数 |
|---|---|---|
| Adlm | Adlam | 88 |
| Afak | Afaka | 0 |
| Aghb | Caucasian Albanian | 53 |
| Ahom | Ahom | 58 |
| Arab | Arabic | 1,291 |
| Aran | Arabic (Nastaliq variant) | 0 |
| Armi | Imperial Aramaic | 31 |
| Armn | Armenian | 96 |
| Avst | Avestan | 61 |
| Bali | Balinese | 121 |
| Bamu | Bamum | 657 |
| Bass | Bassa Vah | 36 |
| Batk | Batak | 56 |
| Beng | Bengali | 96 |
| Bhks | Bhaiksuki | 97 |
| Blis | Blissymbols | 0 |
| Bopo | Bopomofo | 77 |
| Brah | Brahmi | 109 |
| Brai | Braille | 256 |
| Bugi | Buginese | 30 |
| Buhd | Buhid | 20 |
| Cakm | Chakma | 71 |
| Cans | Unified Canadian Aboriginal Syllabics | 710 |
| Cari | Carian | 49 |
| Cham | Cham | 83 |
| Cher | Cherokee | 172 |
| Cirt | Cirth | 0 |
| Copt | Coptic | 137 |
| Cpmn | Cypro-Minoan | 0 |
| Cprt | Cypriot syllabary | 55 |
| Cyrl | Cyrillic | 443 |
| Cyrs | Cyrillic (Slavonic variant) | 0 |
| Deva | Devanagari | 154 |
| Dogr | Dogra | 60 |
| Dsrt | Deseret | 80 |
| Dupl | Duployan shorthand | 143 |
| Egyd | Egyptian demotic | 0 |
| Egyh | Egyptian hieratic | 0 |
| Egyp | Egyptian hieroglyphs | 1,080 |
| Elba | Elbasan | 40 |
| Ethi | Ethiopic | 495 |
| Geok | Khutsuri | 0 |
| Geor | Georgian | 173 |
| Glag | Glagolitic | 132 |
| Gong | Gunjala Gondi | 63 |
| Gonm | Masaram Gondi | 75 |
| Goth | Gothic | 27 |
| Gran | Grantha | 85 |
| Grek | Greek | 518 |
| Gujr | Gujarati | 91 |
| Guru | Gurmukhi | 80 |
| Hanb | Han with Bopomofo | 0 |
| Hang | Hangul | 11,739 |
| Hani | Han (Hanzi, Kanji, Hanja) | 94,204 |
| Hano | Hanunoo | 21 |
| Hans | Han (Simplified variant) | 0 |
| Hant | Han (Traditional variant) | 0 |
| Hatr | Hatran | 26 |
| Hebr | Hebrew | 134 |
| Hira | Hiragana | 379 |
| Hluw | Anatolian Hieroglyphs | 583 |
| Hmng | Pahawh Hmong | 127 |
| Hmnp | Nyiakeng Puachue Hmong | 71 |
| Hrkt | Japanese syllabaries | 0 |
| Hung | Old Hungarian | 108 |
| Inds | Indus | 0 |
| Ital | Old Italic | 39 |
| Jamo | Jamo | 0 |
| Java | Javanese | 90 |
| Jpan | Japanese | 0 |
| Jurc | Jurchen | 0 |
| Kali | Kayah Li | 47 |
| Kana | Katakana | 304 |
| Khar | Kharoshthi | 68 |
| Khmr | Khmer | 146 |
| Khoj | Khojki | 62 |
| Kitl | Khitan large script | 0 |
| Kits | Khitan small script | 471 |
| Knda | Kannada | 89 |
| Kore | Korean | 0 |
| Kpel | Kpelle | 0 |
| Kthi | Kaithi | 67 |
| Lana | Tai Tham | 127 |
| Laoo | Lao | 82 |
| Latf | Latin (Fraktur variant) | 0 |
| Latg | Latin (Gaelic variant) | 0 |
| Latn | Latin | 1,374 |
| Leke | Leke | 0 |
| Lepc | Lepcha | 74 |
| Limb | Limbu | 68 |
| Lina | Linear A | 341 |
| Linb | Linear B | 211 |
| Lisu | Lisu | 49 |
| Loma | Loma | 0 |
| Lyci | Lycian | 29 |
| Lydi | Lydian | 27 |
| Mahj | Mahajani | 39 |
| Maka | Makasar | 25 |
| Mand | Mandaic, Mandaean | 29 |
| Mani | Manichaean | 51 |
| Marc | Marchen | 68 |
| Maya | Mayan hieroglyphs | 0 |
| Medf | Medefaidrin | 91 |
| Mend | Mende Kikakui | 213 |
| Merc | Meroitic Cursive | 90 |
| Mero | Meroitic Hieroglyphs | 32 |
| Mlym | Malayalam | 118 |
| Modi | Modi | 79 |
| Mong | Mongolian | 167 |
| Moon | Moon | 0 |
| Mroo | Mro | 43 |
| Mtei | Meitei Mayek | 79 |
| Mult | Multani | 38 |
| Mymr | Myanmar | 223 |
| Narb | Old North Arabian | 32 |
| Nbat | Nabataean | 40 |
| Newa | Newa | 97 |
| Nkdb | Naxi Dongba | 0 |
| Nkgb | Naxi Geba | 0 |
| Nkoo | N’Ko | 62 |
| Nshu | Nüshu | 397 |
| Ogam | Ogham | 29 |
| Olck | Ol Chiki | 48 |
| Orkh | Old Turkic | 73 |
| Orya | Oriya | 91 |
| Osge | Osage | 72 |
| Osma | Osmanya | 40 |
| Palm | Palmyrene | 32 |
| Pauc | Pau Cin Hau | 57 |
| Perm | Old Permic | 43 |
| Phag | Phags-pa | 56 |
| Phli | Inscriptional Pahlavi | 27 |
| Phlp | Psalter Pahlavi | 29 |
| Phlv | Book Pahlavi | 0 |
| Phnx | Phoenician | 29 |
| Piqd | Klingon | 0 |
| Plrd | Miao | 149 |
| Prti | Inscriptional Parthian | 30 |
| Qaaa | Reserved for private use (start) | 0 |
| Qabx | Reserved for private use (end) | 0 |
| Rjng | Rejang | 37 |
| Roro | Rongorongo | 0 |
| Runr | Runic | 86 |
| Samr | Samaritan | 61 |
| Sara | Sarati | 0 |
| Sarb | Old South Arabian | 32 |
| Saur | Saurashtra | 82 |
| Sgnw | SignWriting | 672 |
| Shaw | Shavian | 48 |
| Shrd | Sharada | 96 |
| Shui | Shuishu | 0 |
| Sidd | Siddham | 92 |
| Sind | Khudawadi | 69 |
| Sinh | Sinhala | 111 |
| Sora | Sora Sompeng | 35 |
| Soyo | Soyombo | 83 |
| Sund | Sundanese | 72 |
| Sylo | Syloti Nagri | 45 |
| Syrc | Syriac | 88 |
| Syre | Syriac (Estrangelo variant) | 0 |
| Syrj | Syriac (Western variant) | 0 |
| Syrn | Syriac (Eastern variant) | 0 |
| Tagb | Tagbanwa | 18 |
| Takr | Takri | 67 |
| Tale | Tai Le | 35 |
| Talu | New Tai Lue | 83 |
| Taml | Tamil | 123 |
| Tang | Tangut | 6,914 |
| Tavt | Tai Viet | 72 |
| Telu | Telugu | 98 |
| Teng | Tengwar | 0 |
| Tfng | Tifinagh | 59 |
| Tglg | Tagalog | 20 |
| Thaa | Thaana | 50 |
| Thai | Thai | 86 |
| Tibt | Tibetan | 207 |
| Tirh | Tirhuta | 82 |
| Ugar | Ugaritic | 31 |
| Vaii | Vai | 300 |
| Visp | Visible Speech | 0 |
| Wara | Warang Citi | 84 |
| Wcho | Wancho | 59 |
| Wole | Woleai | 0 |
| Xpeo | Old Persian | 50 |
| Xsux | Cuneiform, Sumero-Akkadian | 1,234 |
| Yiii | Yi | 1,220 |
| Zanb | Zanabazar Square | 72 |
| Zinh | Code for inherited script | 573 |
| Zmth | Mathematical notation | 0 |
| Zsye | Symbols (Emoji variant) | 0 |
| Zsym | Symbols | 0 |
| Zxxx | Code for unwritten documents | 0 |
| Zyyy | Code for undetermined script | 8,087 |
| Zzzz | Code for uncoded script | 0 |
ブロック
Unicodeにおけるブロックとは連続するコードポイントの範囲をグループ化したものです。ブロックには一意の名前が付いていて重複することはありません。各ブロックはU+hhh0からU+hhhFの符号位置を持っています。
\p{UnicodeProperty}
| ブロック | 名称 | 文字数 |
|---|---|---|
| U+0000 - U+007F | 基本ラテン文字 Basic Latin | 128 |
| U+0080 - U+00FF | ラテン1補助 Latin-1 Supplement | 128 |
| U+0100 - U+017F | ラテン文字拡張A Latin Extended-A | 128 |
| U+0180 - U+024F | ラテン文字拡張B Latin Extended-B | 208 |
| U+0250 - U+02AF | IPA拡張 IPA Extensions | 96 |
| U+02B0 - U+02FF | 前進を伴う修飾文字 Spacing Modifier Letters | 80 |
| U+0300 - U+036F | 合成可能なダイアクリティカルマーク Combining Diacritical Marks | 112 |
| U+0370 - U+03FF | ギリシア文字及びコプト文字 Greek and Coptic | 135 |
| U+0400 - U+04FF | キリル文字 Cyrillic | 256 |
| U+0500 - U+052F | キリル文字補助 Cyrillic Supplement | 48 |
| U+0530 - U+058F | アルメニア文字 Armenian | 91 |
| U+0590 - U+05FF | ヘブライ文字 Hebrew | 88 |
| U+0600 - U+06FF | アラビア文字 Arabic | 255 |
| U+0700 - U+074F | シリア文字 Syriac | 77 |
| U+0750 - U+077F | アラビア文字補助 Arabic Supplement | 48 |
| U+0780 - U+07BF | ターナ文字 Thaana | 50 |
| U+07C0 - U+07FF | ンコ文字 NKo | 62 |
| U+0800 - U+083F | サマリア文字 Samaritan | 61 |
| U+0840 - U+085F | マンダ文字 Mandaic | 29 |
| U+0860 - U+086F | シリア文字拡張 Syriac Supplement | 11 |
| U+0870 - U+089F | アラビア文字拡張B Arabic Extended-B | |
| U+08A0 - U+08FF | アラビア文字拡張A Arabic Extended-A | 84 |
| U+0900 - U+097F | デーヴァナーガリー文字 Devanagari | 128 |
| U+0980 - U+09FF | ベンガル文字 Bengali | 96 |
| U+0A00 - U+0A7F | グルムキー文字 Gurmukhi | 80 |
| U+0A80 - U+0AFF | グジャラート文字 Gujarati | 91 |
| U+0B00 - U+0B7F | オリヤー文字 Oriya | 91 |
| U+0B80 - U+0BFF | タミル文字 Tamil | 72 |
| U+0C00 - U+0C7F | テルグ文字 Telugu | 98 |
| U+0C80 - U+0CFF | カンナダ文字 Kannada | 89 |
| U+0D00 - U+0D7F | マラヤーラム文字 Malayalam | 118 |
| U+0D80 - U+0DFF | シンハラ文字 Sinhala | 91 |
| U+0E00 - U+0E7F | タイ文字 Thai | 87 |
| U+0E80 - U+0EFF | ラオス文字 Lao | 82 |
| U+0F00 - U+0FFF | チベット文字 Tibetan | 211 |
| U+1000 - U+109F | ビルマ文字 Myanmar | 160 |
| U+10A0 - U+10FF | グルジア文字 Georgian | 88 |
| U+1100 - U+11FF | ハングル字母 Hangul Jamo | 256 |
| U+1200 - U+137F | エチオピア文字 Ethiopic | 358 |
| U+1380 - U+139F | エチオピア文字補助 Ethiopic Supplement | 26 |
| U+13A0 - U+13FF | チェロキー文字 Cherokee | 92 |
| U+1400 - U+167F | 統合カナダ先住民音節 Unified Canadian Aboriginal Syllabics | 640 |
| U+1680 - U+169F | オガム文字 Ogham | 29 |
| U+16A0 - U+16FF | ルーン文字 Runic | 89 |
| U+1700 - U+171F | タガログ文字 Tagalog | 20 |
| U+1720 - U+173F | ハヌノオ文字 Hanunoo | 23 |
| U+1740 - U+175F | ブヒッド文字 Buhid | 20 |
| U+1760 - U+177F | タグバヌア文字 Tagbanwa | 18 |
| U+1780 - U+17FF | クメール文字 Khmer | 114 |
| U+1800 - U+18AF | モンゴル文字 Mongolian | 157 |
| U+18B0 - U+18FF | 統合カナダ先住民文字拡張 Unified Canadian Aboriginal Syllabics Extended | 70 |
| U+1900 - U+194F | リンブ文字 Limbu | 68 |
| U+1950 - U+197F | タイ・ナ文字 Tai Le | 35 |
| U+1980 - U+19DF | 新タイロ文字 New Tai Lue | 83 |
| U+19E0 - U+19FF | クメール文字用記号 Khmer Symbols | 32 |
| U+1A00 - U+1A1F | ブギス文字 Buginese | 30 |
| U+1A20 - U+1AAF | タイタム文字 Tai Tham | 127 |
| U+1AB0 - U+1AFF | 合成可能なダイアクリティカルマーク拡張 Combining Diacritical Marks Extended | 17 |
| U+1B00 - U+1B7F | バリ文字 Balinese | 121 |
| U+1B80 - U+1BBF | スンダ文字 Sundanese | 64 |
| U+1BC0 - U+1BFF | バタク文字 Batak | 56 |
| U+1C00 - U+1C4F | レプチャ文字 Lepcha | 74 |
| U+1C50 - U+1C7F | オルチキ文字 Ol Chiki | 48 |
| U+1C80 - U+1C8F | キリル文字拡張C Cyrillic Extended-C | 9 |
| U+1C90 - U+1CBF | グルジア文字拡張 Georgian Extended | 46 |
| U+1CC0 - U+1CCF | スンダ文字補助 Sundanese Supplement | 8 |
| U+1CD0 - U+1CFF | ヴェーダ用拡張 Vedic Extensions | 43 |
| U+1D00 - U+1D7F | 音声記号拡張 Phonetic Extensions | 128 |
| U+1D80 - U+1DBF | 音声記号拡張補助 Phonetic Extensions Supplement | 64 |
| U+1DC0 - U+1DFF | 合成可能なダイアクリティカルマーク補助 Combining Diacritical Marks Supplement | 63 |
| U+1E00 - U+1EFF | ラテン文字拡張追加 Latin Extended Additional | 256 |
| U+1F00 - U+1FFF | ギリシア文字拡張 Greek Extended | 233 |
| U+2000 - U+206F | 一般句読点 General Punctuation | 111 |
| U+2070 - U+209F | 上付き・下付き Superscripts and Subscripts | 42 |
| U+20A0 - U+20CF | 通貨記号 Currency Symbols | 32 |
| U+20D0 - U+20FF | 合成可能な記号用ダイアクリティカルマーク Combining Diacritical Marks for Symbols | 33 |
| U+2100 - U+214F | 文字様記号 Letterlike Symbols | 80 |
| U+2150 - U+218F | 数字に準ずるもの Number Forms | 60 |
| U+2190 - U+21FF | 矢印 Arrows | 112 |
| U+2200 - U+22FF | 数学記号 Mathematical Operators | 256 |
| U+2300 - U+23FF | その他の技術用記号 Miscellaneous Technical | 256 |
| U+2400 - U+243F | 制御機能用記号 Control Pictures | 39 |
| U+2440 - U+245F | 光学的文字認識 Optical Character Recognition | 11 |
| U+2460 - U+24FF | 囲み英数字 Enclosed Alphanumerics | 160 |
| U+2500 - U+257F | 罫線素片 Box Drawing | 128 |
| U+2580 - U+259F | ブロック要素 Block Elements | 32 |
| U+25A0 - U+25FF | 幾何学模様 Geometric Shapes | 96 |
| U+2600 - U+26FF | その他の記号 Miscellaneous Symbols | 256 |
| U+2700 - U+27BF | 装飾記号 Dingbats | 192 |
| U+27C0 - U+27EF | その他の数学記号A Miscellaneous Mathematical Symbols-A | 48 |
| U+27F0 - U+27FF | 補助矢印A Supplemental Arrows-A | 16 |
| U+2800 - U+28FF | 点字図形 Braille Patterns | 256 |
| U+2900 - U+297F | 補助矢印B Supplemental Arrows-B | 128 |
| U+2980 - U+29FF | その他の数学記号B Miscellaneous Mathematical Symbols-B | 128 |
| U+2A00 - U+2AFF | 補助数学記号 Supplemental Mathematical Operators | 256 |
| U+2B00 - U+2BFF | その他の記号及び矢印 Miscellaneous Symbols and Arrows | 253 |
| U+2C00 - U+2C5F | グラゴル文字 Glagolitic | 94 |
| U+2C60 - U+2C7F | ラテン文字拡張C Latin Extended-C | 32 |
| U+2C80 - U+2CFF | コプト文字 Coptic | 123 |
| U+2D00 - U+2D2F | グルジア文字補助 Georgian Supplement | 40 |
| U+2D30 - U+2D7F | ティフィナグ文字 Tifinagh | 59 |
| U+2D80 - U+2DDF | エチオピア文字拡張 Ethiopic Extended | 79 |
| U+2DE0 - U+2DFF | キリル文字拡張A Cyrillic Extended-A | 32 |
| U+2E00 - U+2E7F | 補助句読点 Supplemental Punctuation | 83 |
| U+2E80 - U+2EFF | CJK部首補助 CJK Radicals Supplement | 115 |
| U+2F00 - U+2FDF | 康煕部首 Kangxi Radicals | 214 |
| U+2FF0 - U+2FFF | 漢字構成記述文字 Ideographic Description Characters | 12 |
| U+3000 - U+303F | CJKの記号及び句読点 CJK Symbols and Punctuation | 64 |
| U+3040 - U+309F | 平仮名 Hiragana | 93 |
| U+30A0 - U+30FF | 片仮名 Katakana | 96 |
| U+3100 - U+312F | 注音字母 Bopomofo | 43 |
| U+3130 - U+318F | ハングル互換字母 Hangul Compatibility Jamo | 94 |
| U+3190 - U+319F | 漢文用記号 Kanbun | 16 |
| U+31A0 - U+31BF | 注音字母拡張 Bopomofo Extended | 32 |
| U+31C0 - U+31EF | CJKの筆画 CJK Strokes | 36 |
| U+31F0 - U+31FF | 片仮名拡張 Katakana Phonetic Extensions | 16 |
| U+3200 - U+32FF | 囲みCJK文字・月 Enclosed CJK Letters and Months | 255 |
| U+3300 - U+33FF | CJK互換用文字 CJK Compatibility | 256 |
| U+3400 - U+4DBF | CJK統合漢字拡張A CJK Unified Ideographs Extension A | 6,592 |
| U+4DC0 - U+4DFF | 易経記号 Yijing Hexagram Symbols | 64 |
| U+4E00 - U+9FFF | CJK統合漢字 CJK Unified Ideographs | 20,989 |
| U+A000 - U+A48F | イ文字 Yi Syllables | 1,165 |
| U+A490 - U+A4CF | イ文字部首 Yi Radicals | 55 |
| U+A4D0 - U+A4FF | リス文字 Lisu | 48 |
| U+A500 - U+A63F | ヴァイ文字 Vai | 300 |
| U+A640 - U+A69F | キリル文字拡張B Cyrillic Extended-B | 96 |
| U+A6A0 - U+A6FF | バムン文字 Bamum | 88 |
| U+A700 - U+A71F | 声調修飾文字 Modifier Tone Letters | 32 |
| U+A720 - U+A7FF | ラテン文字拡張D Latin Extended-D | 180 |
| U+A800 - U+A82F | シロティ・ナグリ文字 Syloti Nagri | 45 |
| U+A830 - U+A83F | インド慣用数量記号 Common Indic Number Forms | 10 |
| U+A840 - U+A87F | パスパ文字 Phags-pa | 56 |
| U+A880 - U+A8DF | サウラーシュトラ文字 Saurashtra | 82 |
| U+A8E0 - U+A8FF | デーヴァナーガリー文字拡張 Devanagari Extended | 32 |
| U+A900 - U+A92F | カヤー文字 Kayah Li | 48 |
| U+A930 - U+A95F | ルジャン文字 Rejang | 37 |
| U+A960 - U+A97F | ハングル字母拡張A Hangul Jamo Extended-A | 29 |
| U+A980 - U+A9DF | ジャワ文字 Javanese | 91 |
| U+A9E0 - U+A9FF | ビルマ文字拡張B Myanmar Extended-B | 31 |
| U+AA00 - U+AA5F | チャム文字 Cham | 83 |
| U+AA60 - U+AA7F | ビルマ文字拡張A Myanmar Extended-A | 32 |
| U+AA80 - U+AADF | タイ・ヴィエト文字 Tai Viet | 72 |
| U+AAE0 - U+AAFF | メイテイ文字拡張 Meetei Mayek Extensions | 23 |
| U+AB00 - U+AB2F | エチオピア文字拡張A Ethiopic Extended-A | 32 |
| U+AB30 - U+AB6F | ラテン文字拡張E Latin Extended-E | 60 |
| U+AB70 - U+ABBF | チェロキー文字補助 Cherokee Supplement | 80 |
| U+ABC0 - U+ABFF | メイテイ文字 Meetei Mayek | 56 |
| U+AC00 - U+D7AF | ハングル音節文字 Hangul Syllables | 11,172 |
| U+D7B0 - U+D7FF | ハングル字母拡張B Hangul Jamo Extended-B | 72 |
| U+D800 - U+DB7F | サロゲート (high surrogate) High Surrogates | 0 |
| U+DB80 - U+DBFF | サロゲート (high private use surrogate) High Private Use Surrogates | 0 |
| U+DC00 - U+DFFF | サロゲート (low surrogate) Low Surrogates | 0 |
| U+E000 - U+F8FF | 私用領域 Private Use Area | 0 |
| U+F900 - U+FAFF | CJK互換漢字 CJK Compatibility Ideographs | 472 |
| U+FB00 - U+FB4F | アルファベット表示形 Alphabetic Presentation Forms | 58 |
| U+FB50 - U+FDFF | アラビア表示形A Arabic Presentation Forms-A | 611 |
| U+FE00 - U+FE0F | 字形選択子 Variation Selectors | 16 |
| U+FE10 - U+FE1F | 縦書き形 Vertical Forms | 10 |
| U+FE20 - U+FE2F | 合成可能な半記号 Combining Half Marks | 16 |
| U+FE30 - U+FE4F | CJK互換形 CJK Compatibility Forms | 32 |
| U+FE50 - U+FE6F | 小字形 Small Form Variants | 26 |
| U+FE70 - U+FEFF | アラビア表示形B Arabic Presentation Forms-B | 141 |
| U+FF00 - U+FFEF | 半角・全角形 Halfwidth and Fullwidth Forms | 225 |
| U+FFF0 - U+FFFF | 特殊用途文字 Specials | 5 |
| U+10000 - U+1007F | 線文字B音節文字 Linear B Syllabary | 88 |
| U+10080 - U+100FF | 線文字B表意文字 Linear B Ideograms | 123 |
| U+10100 - U+1013F | エーゲ数字 Aegean Numbers | 57 |
| U+10140 - U+1018F | 古代ギリシア数字 Ancient Greek Numbers | 79 |
| U+10190 - U+101CF | 古代記号 Ancient Symbols | 14 |
| U+101D0 - U+101FF | ファイストスの円盤文字 Phaistos Disc | 46 |
| U+10280 - U+1029F | リュキア文字 Lycian | 29 |
| U+102A0 - U+102DF | カリア文字 Carian | 49 |
| U+102E0 - U+102FF | コプト・エパクト数字 Coptic Epact Numbers | 28 |
| U+10300 - U+1032F | 古代イタリア文字 Old Italic | 39 |
| U+10330 - U+1034F | ゴート文字 Gothic | 27 |
| U+10350 - U+1037F | 古ペルム文字 Old Permic | 43 |
| U+10380 - U+1039F | ウガリト文字 Ugaritic | 31 |
| U+103A0 - U+103DF | 古代ペルシャ文字 Old Persian | 50 |
| U+10400 - U+1044F | デザレット文字 Deseret | 80 |
| U+10450 - U+1047F | ショー文字 Shavian | 48 |
| U+10480 - U+104AF | オスマニア文字 Osmanya | 40 |
| U+104B0 - U+104FF | オセージ文字 Osage | 72 |
| U+10500 - U+1052F | エルバサン文字 Elbasan | 40 |
| U+10530 - U+1056F | カフカス・アルバニア文字 Caucasian Albanian | 53 |
| U+10570 - U+105BF | ビタクチェ文字 Vithkuqi | |
| U+10600 - U+1077F | 線文字A Linear A | 341 |
| U+10780 - U+107BF | ラテン文字拡張F Latin Extended-F | |
| U+10800 - U+1083F | キプロス音節文字 Cypriot Syllabary | 55 |
| U+10840 - U+1085F | 帝国アラム文字 Imperial Aramaic | 31 |
| U+10860 - U+1087F | パルミラ文字 Palmyrene | 32 |
| U+10880 - U+108AF | ナバテア文字 Nabataean | 40 |
| U+108E0 - U+108FF | ハトラ文字 Hatran | 26 |
| U+10900 - U+1091F | フェニキア文字 Phoenician | 29 |
| U+10920 - U+1093F | リュディア文字 Lydian | 27 |
| U+10980 - U+1099F | メロエ文字楷書体 Meroitic Hieroglyphs | 32 |
| U+109A0 - U+109FF | メロエ文字草書体 Meroitic Cursive | 90 |
| U+10A00 - U+10A5F | カローシュティー文字 Kharoshthi | 68 |
| U+10A60 - U+10A7F | 古代南アラビア文字 Old South Arabian | 32 |
| U+10A80 - U+10A9F | 古代北アラビア文字 Old North Arabian | 32 |
| U+10AC0 - U+10AFF | マニ文字 Manichaean | 51 |
| U+10B00 - U+10B3F | アヴェスタ文字 Avestan | 61 |
| U+10B40 - U+10B5F | 碑文パルティア文字 Inscriptional Parthian | 30 |
| U+10B60 - U+10B7F | 碑文パフラヴィ文字 Inscriptional Pahlavi | 27 |
| U+10B80 - U+10BAF | 詩編パフラヴィ文字 Psalter Pahlavi | 29 |
| U+10C00 - U+10C4F | 突厥文字 Old Turkic | 73 |
| U+10C80 - U+10CFF | 古ハンガリー文字 Old Hungarian | 108 |
| U+10D00 - U+10D3F | ハニーフィー・ロヒンギャ文字 Hanifi Rohingya | 50 |
| U+10E60 - U+10E7F | ルミ数字記号 Rumi Numeral Symbols | 31 |
| U+10E80 - U+10EBF | ヤズィーディー文字 Yezidi | 47 |
| U+10EC0 - U+10EFF | アラビア文字拡張C Arabic Extended-C | |
| U+10F00 - U+10F2F | 古ソグド文字 Old Sogdian | 40 |
| U+10F30 - U+10F6F | ソグド文字 Sogdian | 42 |
| U+10F70 - U+10FAF | 古ウイグル文字 Old Uyghur | |
| U+10FB0 - U+10FDF | ホラズム文字 Chorasmian | 28 |
| U+10FE0 - U+10FFF | エリマイス文字 Elymaic | 23 |
| U+11000 - U+1107F | ブラーフミー文字 Brahmi | 109 |
| U+11080 - U+110CF | カイティー文字 Kaithi | 67 |
| U+110D0 - U+110FF | ソラングソンペング文字 Sora Sompeng | 35 |
| U+11100 - U+1114F | チャクマ文字 Chakma | 71 |
| U+11150 - U+1117F | マハージャニー文字 Mahajani | 39 |
| U+11180 - U+111DF | シャーラダー文字 Sharada | 96 |
| U+111E0 - U+111FF | 旧シンハラ数字 Sinhala Archaic Numbers | 20 |
| U+11200 - U+1124F | ホジャ文字 Khojki | 62 |
| U+11280 - U+112AF | ムルターニー文字 Multani | 38 |
| U+112B0 - U+112FF | フダーワーディー文字 Khudawadi | 69 |
| U+11300 - U+1137F | グランタ文字 Grantha | 86 |
| U+11400 - U+1147F | ネワ文字 Newa | 97 |
| U+11480 - U+114DF | ティルフータ文字 Tirhuta | 82 |
| U+11580 - U+115FF | 悉曇文字 Siddham | 92 |
| U+11600 - U+1165F | モーディー文字 Modi | 79 |
| U+11660 - U+1167F | モンゴル文字補助 Mongolian Supplement | 13 |
| U+11680 - U+116CF | タークリー文字 Takri | 67 |
| U+11700 - U+1173F | アーホム文字 Ahom | 58 |
| U+11800 - U+1184F | ドーグリー文字 Dogra | 60 |
| U+118A0 - U+118FF | ワラング・クシティ文字 Warang Citi | 84 |
| U+11900 - U+1195F | ディヴェス・アクル文字 Dives Akuru | 72 |
| U+119A0 - U+119FF | ナンディナーガリー文字 Nandinagari | 65 |
| U+11A00 - U+11A4F | ザナバザル方形文字 Zanabazar Square | 72 |
| U+11A50 - U+11AAF | ソヨンボ文字 Soyombo | 83 |
| U+11AB0 - U+11ABF | 統合カナダ先住民音節拡張A Unified Canadian Aboriginal Syllabics Extended-A | |
| U+11AC0 - U+11AFF | パウ・チン・ハウ文字 Pau Cin Hau | 57 |
| U+11C00 - U+11C6F | バイクシュキー文字 Bhaiksuki | 97 |
| U+11C70 - U+11CBF | マルチェン文字 Marchen | 68 |
| U+11D00 - U+11D5F | マサラム・ゴーンディー文字 Masaram Gondi | 75 |
| U+11D60 - U+11DAF | グンジャラ・ゴーンディー文字 Gunjala Gondi | 63 |
| U+11EE0 - U+11EFF | マカッサル文字 Makasar | 25 |
| U+11F00 - U+11F5F | カウィ文字 Kawi | |
| U+11FB0 - U+11FBF | リス文字補助 Lisu Supplement | 1 |
| U+11FC0 - U+11FFF | タミル文字補助 Tamil Supplement | 51 |
| U+12000 - U+123FF | 楔形文字 Cuneiform | 922 |
| U+12400 - U+1247F | 楔形文字の数字及び句読点 Cuneiform Numbers and Punctuation | 116 |
| U+12480 - U+1254F | シュメール楔形文字 Early Dynastic Cuneiform | 196 |
| U+12F90 - U+12FFF | キュプロ・ミノア文字 Cypro-Minoan | |
| U+13000 - U+1342F | エジプト聖刻文字 Egyptian Hieroglyphs | 1,071 |
| U+13430 - U+1343F | エジプト聖刻文字書式制御記号 Egyptian Hieroglyph Format Controls | 9 |
| U+14400 - U+1467F | アナトリア聖刻文字 Anatolian Hieroglyphs | 583 |
| U+16800 - U+16A3F | バムン文字補助 Bamum Supplement | 569 |
| U+16A40 - U+16A6F | ムロ文字 Mro | 43 |
| U+16AD0 - U+16AFF | バサ文字 Bassa Vah | 36 |
| U+16B00 - U+16B8F | パハウ・フモン文字 Pahawh Hmong | 127 |
| U+16E40 - U+16E9F | メデファイドリン文字 Medefaidrin | 91 |
| U+16F00 - U+16F9F | ミャオ文字 Miao | 149 |
| U+16FE0 - U+16FFF | 漢字の記号及び句読点 Ideographic Symbols and Punctuation | 7 |
| U+17000 - U+187FF | 西夏文字 Tangut | 6,136 |
| U+18800 - U+18AFF | 西夏文字の構成要素 Tangut Components | 768 |
| U+18B00 - U+18CFF | 契丹小字 Khitan Small Script | 470 |
| U+18D00 - U+18D8F | 西夏文字補助 Tangut Supplement | 9 |
| U+1AFF0 - U+1AFFF | 仮名拡張B Kana Extended-B | |
| U+1B000 - U+1B0FF | 仮名補助 Kana Supplement | 256 |
| U+1B100 - U+1B12F | 仮名拡張A Kana Extended-A | 31 |
| U+1B130 - U+1B16F | 小書き仮名拡張 Small Kana Extension | 7 |
| U+1B170 - U+1B2FF | 女書 Nushu | 396 |
| U+1BC00 - U+1BC9F | デュプロワイエ式速記 Duployan | 143 |
| U+1BCA0 - U+1BCAF | 速記書式制御記号 Shorthand Format Controls | 4 |
| U+1CF00 - U+1CFCF | ズナメニ聖歌音符 Znamenny Musical Notation | |
| U+1D000 - U+1D0FF | ビザンチン音楽記号 Byzantine Musical Symbols | 246 |
| U+1D100 - U+1D1FF | 音楽記号 Musical Symbols | 231 |
| U+1D200 - U+1D24F | 古代ギリシア音符記号 Ancient Greek Musical Notation | 70 |
| U+1D2C0 - U+1D2DF | カクトヴィク数字 Kaktovik Numerals | |
| U+1D2E0 - U+1D2FF | マヤ数字 Mayan Numerals | 20 |
| U+1D300 - U+1D35F | 太玄経記号 Tai Xuan Jing Symbols | 87 |
| U+1D360 - U+1D37F | 算木用数字 Counting Rod Numerals | 25 |
| U+1D400 - U+1D7FF | 数学用英数字記号 Mathematical Alphanumeric Symbols | 996 |
| U+1D800 - U+1DAAF | サットン手話表記法 Sutton SignWriting | 672 |
| U+1DF00 - U+1DFFF | ラテン文字拡張G Latin Extended-G | |
| U+1E000 - U+1E02F | グラゴル文字補助 Glagolitic Supplement | 38 |
| U+1E030 - U+1E08F | キリル文字拡張D Cyrillic Extended-D | |
| U+1E100 - U+1E14F | Nyiakeng Puachue Hmong文字 Nyiakeng Puachue Hmong | 71 |
| U+1E290 - U+1E2BF | トト Toto | |
| U+1E2C0 - U+1E2FF | ワンチョ文字 Wancho | 59 |
| U+1E4D0 - U+1E4FF | ムンダリ・バニ文字 Nag Mundari | |
| U+1E7E0 - U+1E7FF | エチオピア文字拡張B Ethiopic Extended-B | |
| U+1E800 - U+1E8DF | メンデ文字 Mende Kikakui | 213 |
| U+1E900 - U+1E95F | アドラム文字 Adlam | 88 |
| U+1EC70 - U+1ECBF | インド・シヤク数字 Indic Siyaq Numbers | 68 |
| U+1ED00 - U+1ED4F | オスマン・シヤク数字 Ottoman Siyaq Numbers | 61 |
| U+1EE00 - U+1EEFF | アラビア数字記号 Arabic Mathematical Alphabetic Symbols | 143 |
| U+1F000 - U+1F02F | マージャン記号 Mahjong Tiles | 44 |
| U+1F030 - U+1F09F | ドミノ記号 Domino Tiles | 100 |
| U+1F0A0 - U+1F0FF | トランプ記号 Playing Cards | 82 |
| U+1F100 - U+1F1FF | 囲み英数字補助 Enclosed Alphanumeric Supplement | 200 |
| U+1F200 - U+1F2FF | 囲み漢字補助 Enclosed Ideographic Supplement | 64 |
| U+1F300 - U+1F5FF | その他の記号及び絵記号 Miscellaneous Symbols and Pictographs | 768 |
| U+1F600 - U+1F64F | 顔文字 Emoticons | 80 |
| U+1F650 - U+1F67F | 装飾用絵記号 Ornamental Dingbats | 48 |
| U+1F680 - U+1F6FF | 交通及び地図記号 Transport and Map Symbols | 114 |
| U+1F700 - U+1F77F | 錬金術記号 Alchemical Symbols | 116 |
| U+1F780 - U+1F7FF | 幾何学模様拡張 Geometric Shapes Extended | 101 |
| U+1F800 - U+1F8FF | 補助矢印C Supplemental Arrows-C | 150 |
| U+1F900 - U+1F9FF | 補助記号及び絵記号 Supplemental Symbols and Pictographs | 254 |
| U+1FA00 - U+1FA6F | チェス記号 Chess Symbols | 98 |
| U+1FA70 - U+1FAFF | 記号及び絵記号拡張A Symbols and Pictographs Extended-A | 57 |
| U+1FB00 - U+1FBFF | 旧型コンピュータ記号 Symbols for Legacy Computing | 212 |
| U+20000 - U+2A6DF | CJK統合漢字拡張B CJK Unified Ideographs Extension B | 42,718 |
| U+2A700 - U+2B73F | CJK統合漢字拡張C CJK Unified Ideographs Extension C | 4,149 |
| U+2B740 - U+2B81F | CJK統合漢字拡張D CJK Unified Ideographs Extension D | 222 |
| U+2B820 - U+2CEAF | CJK統合漢字拡張E CJK Unified Ideographs Extension E | 5,762 |
| U+2CEB0 - U+2EBEF | CJK統合漢字拡張F CJK Unified Ideographs Extension F | 7,473 |
| U+2EBF0 - U+2EE5F | CJK統合漢字拡張I CJK Unified Ideographs Extension I | |
| U+2F800 - U+2FA1F | CJK互換漢字補助 CJK Compatibility Ideographs Supplement | 542 |
| U+30000 - U+3134F | CJK統合漢字拡張G CJK Unified Ideographs Extension G | 4,939 |
| U+31350 - U+323AF | CJK統合漢字拡張H CJK Unified Ideographs Extension H | |
| U+E0000 - U+E007F | タグ Tags | 97 |
| U+E0100 - U+E01EF | 字形選択子補助 Variation Selectors Supplement | 240 |
| U+F0000 - U+FFFFF | 補助私用領域A Supplementary Private Use Area-A | 0 |
| U+100000 - U+10FFFF | 補助私用領域B Supplementary Private Use Area-B | 0 |
一致リストの取得
指定した範囲の整数
以下は、0〜255の範囲にある整数にマッチする正規表現です。
DIM Matches = reExecute(str, "\b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b")- \b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
- 0〜99の数値
- \b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
- 100〜199の数値
- \b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
- 200〜249の数値
- \b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
- 250〜255の数値
- \b([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
- 0〜99、100〜199、200〜249、または250〜255の数値。
偶数
DIM Matches = reExecute(str, "\b\d*[02468]\b")奇数
DIM Matches = reExecute(str, "\b\d*[13579]\b")URL
DIM Matches = reExecute(str, "https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?")メールアドレス
受信したメールの本文から抽出するときなどに。
DIM Matches = reExecute(str, "[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*")郵便番号
DIM Matches = reExecute(str, "\d{3}-\d{4}")- \d{3}-\d{4}
- 3桁の数字
- \d{3}-\d{4}
- 4桁の数字
日付(Y/M/D形式)
日付の正規表現です。あくまで月が1~12、日が1~31の範囲であることだけを確認しているので、06/31など存在しない日付にもマッチします。
DIM Matches = reExecute(str, "[0-9]{,4}/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])")- [0-9]{,4}/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])
- 4桁以下の数字
- [0-9]{,4}/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])
- 1~12の数字。先頭の0埋めはあってもなくても良い。
- [0-9]{,4}/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])
- 1~31の数字。先頭の0埋めはあってもなくても良い。
日付(YMD形式)
厳密に日付をチェックするには以下を使います。
DIM Matches = reExecute(str, "(?!([02468][1235679]|[13579][01345789])000229)(([0-9]{4}(01|03|05|07|08|10|12)(0[1-9]|[12][0-9]|3[01]))|([0-9]{4}(04|06|09|11)(0[1-9]|[12][0-9]|30))|([0-9]{4}02(0[1-9]|1[0-9]|2[0-8]))|([0-9]{2}([02468][048]|[13579][26])0229))")携帯電話番号(070、080、090から始まる11桁の番号)
070-0・080-0・090-0から始まる番号は存在しないので除外。
DIM Matches = reExecute(str, "0[789]0-[1-9]\d{3}-\d{4}")フリーダイヤル(0120-000-000、0800-000-0000)
DIM Matches = reExecute(str, "0(?:120-\d{3}-\d{2}|800-\d{3}-\d{3})0")IP電話(050から始まる11桁の番号)
DIM Matches = reExecute(str, "050-\d{4}-\d{4}")IPアドレス
IPアドレスは「xxx.xxx.xxx.xxx」形式で表されます。x=0~255の値。
DIM Matches = reExecute(str, "(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])")- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 0~99の数値
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 100~199の数値
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 200〜249の数値
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 250〜255の数値
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 250〜255 or 200〜249 or 100〜199 or 0〜99なので0〜255
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 「0〜255.」を3回繰り返し。
- (([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
- 0〜255の数値
英数字
DIM Matches = reExecute(str, "[A-Za-z0-9]+")参考文献
- 文字クラス - JavaScript | MDN
- PHP: メタ文字 - Manual
- JavaScriptで扱えるUnicodeプロパティ一覧 #正規表現 - Qiita
- Unicodeのコードポイントやプロパティの一覧、詳細情報などを確認 | note.nkmk.me
- Unicode Utilities: Character Property Index
- PHP: Unicode 文字プロパティ - Manual
- 正規表現 記法 まとめ - galife
- Unicode Character Categories
- http://ftp.unicode.org/Public/UNIDATA/Blocks.txt
- Mastering Regular Expressions - Jeffrey E. F. Friedl - Google ブツッツクツス
