ReiはJavaScriptの正規表現を補強するライブラリです。Reiは以下のような特徴を持ちます。JavaScriptオブジェクトによる正規表現の構築Javaのようなマッチャクラス使用方法ブラウザブラウザで使用するにはscriptタグでロードします。src="rei.js"></script>node.jsnode.jsで使用するにはnpmよりパッケージをダウンロードします。morilib-reiその後、使用するアプリケーションでmorilib-reiをrequireします。require("morilib-rei");JavaScriptオブジェクトによる正規表現の構築JavaScriptにより正規表現を構築できます。このことにより正規表現の意味がわかりやすくなります。Reiにより正規表現を構築するにはRe.iまたはRe.build関数を使用します。文字列リテラルは単純な文字列にマッチします。文字列中の正規表現メタキャラクタはエスケープされます。falseパターンの連接パターンの連接には連接したいパターンを配列の要素にします。false繰り返しパターンの繰り返しには以下のようなプロパティを持つオブジェクトを記述します。内容oneOrMore1回以上の繰り返しzeroOrMore0回以上の繰り返しmaybe0回または1回の出現repeatn回からm回の繰り返しoneOrMoreNonGreedy1回以上の繰り返し(非欲張り)zeroOrMoreNonGreedy0回以上の繰り返し(非欲張り)maybeNonGreedy0回または1回の出現(非欲張り)repeatNonGreedyn回からm回の繰り返し(非欲張り)1回以上の繰り返しは以下のように記述します。truen回からm回の繰り返しは以下のように記述します。trueプロパティ名には別名があります。oneOrMoreの代わりにrepeatOneOrMoreと書いても問題ありません。プロパティ名は大文字小文字を区別しません。詳しくは「記法」の章を参照してください。選択はorを使用します。プロパティの要素には配列を指定します。false文字セット文字セットはcharsetを使用します。プロパティの要素には定義済み文字セットまたはrangeを指定します。補文字セットはcomplementaryCharsetを使用します。定義済み文字セットの詳細については「定義済み文字セット」の章を参照してください。trueキャプチャキャプチャはcaptureを使用します。後方参照にはreferを使用します。referの要素にはキャプチャの番号を指定します。true名前付きキャプチャキャプチャには名前をつけることができます。名前付きキャプチャを使用するにはcaptureプロパティの要素に"name"を含むオブジェクトを指定します。生の正規表現を埋め込むことができます。正規表現の埋め込みにはrawを指定します。生の正規表現中のキャプチャの括弧は認識されます。}console.log(regex.execWithName("<a>index.html</a>"));UnicodeプロパティUnicodeプロパティを使用するにはJavaScriptオブジェクトのunicodeプロパティを使用します。Unicodeプロパティ名の前にはIsをつけることもできます。Unicodeプロパティの種類により以下のヘッダがつきます。Latin用字Script=またはsc=またはScript:Script=GreekUnicodeプロパティの単語の区切りにはスペース、アンダースコア(_)、ハイフン(-)を使用することができます。Reiにはいくつかの定義済みシーケンスが定義されています。定義済みシーケンスを使用するにはsequenceプロパティを使用します。定義済みシーケンスの詳細は「定義済みシーケンス」を参照してください。Reiでは連続したマッチを実現するためにマッチャクラスを用意しています。マッチャクラスの生成にはRe.i関数により生成されたクラスのmatcherメソッドを使用します。}).matcher("Rei");マッチャクラスは下記のメソッドを持ちます。下記のメソッドにおいて、マッチの開始位置は前回マッチした最後の位置となります。マッチが失敗したときはマッチの位置は変わりません。メソッド内容findマッチの開始位置からパターンを検索しますlookingAtマッチの開始位置から始まるパターンを検索しますmatchesマッチの開始位置から始まり、文字列の最後で終わるパターンを検索しますusePatternマッチに使用するパターンを変更します。マッチの開始位置は変わりませんusePatternを使用することでパターンを変えながらマッチさせることができます。usePatternを使用してLispで使用されるS式を解析する例を以下に挙げます。bDescription与えられたパターンを0回以上繰り返します。bDescription与えられたパターンを1回以上繰り返します。bDescription与えられたパターンを0回または1回繰り返します。abDescription与えられたパターンを少なくとも"from"回、多くとも"to"回繰り返します。"from"が指定されなかったときは0になります。"to"が指定されなかったときは繰り返しの上限はなくなります。aaaaa-a-Description与えられたパターンを0回以上繰り返します。最小の範囲にマッチします。上記の例ではaaaaa-a-はaaaaaにマッチします。zeroOrMoreを代わりに使用したときはaaaaa-aにマッチします。aaaaa-a-Description与えられたパターンを1回以上繰り返します。最小の範囲にマッチします。上記の例ではaaaaa-a-はaaaaaにマッチします。oneOrMoreを代わりに使用したときはaaaaa-aにマッチします。Description与えられたパターンを0回または1回繰り返します。最小の範囲にマッチします。上記の例では—​は空文字列にマッチします。maybeを代わりに使用したときは-にマッチします。aaaaa-a-Description与えられたパターンを少なくとも"from"回、多くとも"to"回繰り返します。最小の範囲にマッチします。"from"が指定されなかったときは0になります。"to"が指定されなかったときは繰り返しの上限はなくなります。上記の例ではaaaaa-a-はaaaaaにマッチします。repeatを代わりに使用したときはaaaaa-aにマッチします。765proDescriptionリスト内のパターンのいずれかにマッチします。"(a*)"Description与えられたパターンにマッチし、結果を保存します。値に"name"のプロパティを含むオブジェクトが与えられたときは結果に名前がつけられます。ReiのAPIを通じて使用することができます。名前付きキャプチャにも通常と同様のキャプチャ番号が採番されます。a+bDescription生の正規表現を埋め込みます。[\s\S]Description与えられた文字セット内の文字にマッチします。[^\d]Description与えられた文字セットにない文字にマッチします。dabcDescription境界にマッチします。以下のものが名称として使用できます。\u0041DescriptionUTF-16文字コードで与えられた文字にマッチします。765Description与えられたパターンにマッチしますが、入力は消費しません。765?Description与えられたパターンにマッチしないときマッチしますが、入力は消費しません。\p{L}Description与えられたUnicodeプロパティにある文字にマッチします。\P{L}Description与えられたUnicodeプロパティにない文字にマッチします。"real"}Description与えられた名称の定義済みパターンにマッチします。}}Description与えられた"from"プロパティから"to"プロパティに含まれる文字にマッチします。"L"}Description与えられたUnicodeプロパティにある文字にマッチします。"L"}Description与えられたUnicodeプロパティにない文字にマッチします。定義済み文字セットallDescription全ての文字にマッチします。digitDescription数字にマッチします。notDigitDescription数字でない文字にマッチします。wordDescription単語を構成する文字にマッチします。notWordDescription単語を構成しない文字にマッチします。whitespaceDescription空白文字にマッチします。notWhitespaceDescription空白文字でない文字にマッチします。tabDescriptionタブ文字にマッチします。crDescriptionCR文字にマッチします。lfDescription行送り文字にマッチします。vtDescription垂直タブ文字にマッチします。feed文字にマッチします。bsDescriptionバックスペース文字にマッチします。定義済みシーケンスallDescription全ての文字にマッチします。allExceptNewlineDescription改行文字を除く全ての文字にマッチします。brDescription改行を表すシーケンスに一致します。CRLFのようなシーケンスにもマッチします。floatNumberWithSignDescription浮動小数点数にマッチします。符号にもマッチします。floatNumberWithoutSignDescription浮動小数点数にマッチします。符号にはマッチしません。APIRei.execWithNameParameterNameDescriptionaStringマッチさせる文字列Returnキャプチャされた文字列Description与えらた文字列をパターンにマッチさせます。"abc"Rei.matcherParameterNameDescriptionaStringマッチさせる文字列Return生成されたマッチャDescriptionマッチャを生成します。";"]).matcher("abc;");Rei.findReturnマッチした結果Descriptionパターンにマッチするシーケンスを探します。戻り値はRegExp.exec()と同じです。defRei.lookingAtReturnマッチした結果Descriptionパターンにマッチするシーケンスに最後にマッチした位置からマッチさせます。マッチに失敗したときのマッチの最後位置は変わりません。戻り値はRegExp.exec()と同じです。nullRei.matchesReturnマッチした結果Descriptionパターンにマッチするシーケンスに最後にマッチした位置からシーケンスの最後までマッチします。マッチに失敗したときのマッチの最後位置は変わりません。戻り値はRegExp.exec()と同じです。Reiで解釈できるJavaScriptオブジェクトReturnこのインスタンスDescriptionマッチに使用するパターンを与えられたものに切り替えます。マッチの最後位置は変わりません。