「|」を選択すると、2人以上の候補者から選択します。章のタイトルの正規表現を拡張することにより、チャプタータイトルだけではない式に拡張できます。ただし、これは予想ほど直接的ではありません。選択を使用すると、「|」の各側の最も可能性の高い表現が一致します。次のJScriptとVBScriptの式は、行の開始位置と終了位置で「章」または「セクション」と一致し、1つまたは2つの数字が続くと思われるかもしれません。
/^Chapter|Section [1-9][0-9]{0,1}$/ ^Chapter|Section [1-9][0-9]{0,1}___FCKpd___0quot;残念ながら、実際のケースは、上に示されている正規表現が、行の先頭にある「章」という単語と一致するか、行の最後にある「セクション」と一致することです。入力文字列が「第22章」の場合、上記の式は「章」という単語と一致します。入力文字列が「セクション22」の場合、式は「セクション22」と一致します。しかし、この結果はここでの私たちの目的ではないので、彼らがやろうとしていることに対して正規表現をより敏感にする方法がなければならず、実際にそのような方法があります。
括弧を使用して、選択の範囲を制限することができます。つまり、選択が2つの単語「章」と「セクション」にのみ適用されることは明らかです。ただし、括弧も使用されているため、括弧も使用されているため、対処することも困難であり、一部は後述のセクションで後で紹介されます。上記の正規表現を取得し、適切な場所で括弧を追加することにより、正規表現を「第1章」と「セクション3」の両方に一致させることができます。
次の正規表現は、括弧を使用して「章」と「セクション」をグループ化して、式が正しく機能するようにします。 jscriptの場合:
/^(Chapter|Section) [1-9][0-9]{0,1}$/vbscriptの場合:
^(Chapter|Section) [1-9][0-9]{0,1}___FCKpd___2quot;これらの式は正しく機能し、興味深い副産物を生成するだけです。 「章|セクション」の両側に括弧を配置すると、適切なグループ化が作成されますが、将来の使用のために2つの単語のいずれかがキャプチャされるようになります。上記の式には括弧のセットが1つしかないため、キャプチャされたサブマッチは1つだけです。このサブマッチは、vbscriptのサブマッチコレクションまたはjscriptのregexpオブジェクトの1〜9ドルの属性を使用して参照できます。
サブマッチをキャプチャすることが望ましい場合があり、時には望ましくないこともあります。説明に示されている例では、本当にやりたいのは、括弧を使用して「章」または「セクション」という単語の選択をグループ化することです。後で試合を参照することは望ましくありません。実際、サブマッチを実際にキャプチャする必要がない限り、使用しないでください。これらのサブマッチを保存するために時間とメモリを必要としないため、この正規表現はより効率的になります。
「?:」を使用して、正規表現パターンの括弧の前で、将来の使用のためにこのマッチを保存するのを防ぐことができます。上記の正規表現の次の変更は、サブマッチストレージを排除するのと同じ機能を提供します。 jscriptの場合:
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/vbscriptの場合:
^(?:Chapter|Section) [1-9][0-9]{0,1}___FCKpd___4quot;「?:」メタカラクターに加えて、プレチェックと呼ばれる一致に使用される2つの非キャプチャのメタチャラクターがあります。フォワードプレチェックは?=で表されます。ここで、括弧内の正規表現パターンが検索文字列と一致し始めます。ネガティブなプレチェックは、「?!」で示されています。
たとえば、Windows 3.1、Windows 95、Windows 98、およびWindows NTへの参照を含むドキュメントがあるとします。さらに、Windows 95、Windows 98、およびWindows NTへのすべての参照を探し、これらの参照をWindows 2000に変更することにより、ドキュメントを更新する必要があると仮定します。次のJScript正規表現を使用できます。これは、Windows 95、Windows 98、およびWindows NTに一致するフォワードプレチェックです。
/Windows(?=95 |98 |NT )/ VBScriptで同じ一致を作成するには、次の式を使用できます。Windows Windows(?=95 |98 |NT )
一致が見つかると、次の試合検索は一致するテキストの直後に始まります(事前尋問で使用される文字は含まれません)。たとえば、上記の式が「Windows 98」と一致する場合、検索は「98」ではなく「Windows」から続きます。
正規表現の最も重要な特徴の1つは、後で使用するために一致する成功したパターンの一部を保存する機能です。正規表現パターンまたは部分パターンの両側に括弧を追加すると、部分表現が一時的なバッファーに保存されることを思い出してください。非キャプチャメタラクター ':'、 '?='、または「?!」は、正規表現のこの部分の保存を無視することができます。
キャプチャされた各サブマッチは、正規表現パターンで左から右に遭遇するコンテンツとして保存されます。サブマッチを保存するバッファ数は1から始まり、最大99のサブ発現まで連続して番号が付けられます。各バッファーは「/ n 」を使用してアクセスできます。ここで、 nは特定のバッファーを識別する1桁または2桁の10進数です。
後方引用が最も簡単で最も有用なアプリケーションの1つは、2つの同一の単語がテキストのどこに表示されるかを連続して決定できることです。次の文をご覧ください。
Is is the cost of of gasoline going up up?書かれたコンテンツによると、上記の文には明らかに、繰り返し単語の問題が繰り返しあります。各単語の繰り返しを探しずに文を変更する方法があれば素晴らしいでしょう。次のJScriptの正規表現は、サブエグセンスを使用してこの関数を達成できます。
//b([az]+) /1/b/gi同等のVBScript式は次のとおりです。
/b([az]+) /1/bこの例では、サブエクスペッションは括弧間の各アイテムです。キャプチャされた式には、1つ以上のアルファベット順の文字、つまり「[az]+」で指定されています。正規表現の2番目の部分は、以前にキャプチャされたサブマッチ、つまり、追加の式と一致する単語の2番目の発生への参照です。 '/1'は、最初のサブマッチを指定するために使用されます。単語境界要素文字は、個々の単語のみが検出されるようにします。そうでない場合、発行されたフレーズまたはこれが式によって誤って認識されます。
JScript式では、正規表現に続くグローバルフラグ( 'g')は、式が入力文字列でできるだけ多くの一致を見つけるために使用されることを意味します。症例感度は、式の終わりにケース感度マーク( 'i')によって指定されます。マルチラインタグは、新しいライン文字の両端に表示される可能性のある潜在的な一致を指定します。 VBScriptの場合、式でさまざまなタグを設定することはできませんが、 Regexpオブジェクトのプロパティを使用して明示的に設定する必要があります。
上記の正規表現を使用して、次のJScriptコードは、サブマッチ情報を使用して、同じ単語で文字通り文字列に2回表示される同じ単語を置き換えることができます。
. var rv = ss.replace(re,$1); //var ss = Is is the cost of of gasoline going up up?./n; var re = //b([az]+) /1/b/gim; //. var rv = ss.replace(re,$1); //2つの単語を1つの単語に置き換えます.
最も近い同等のVBScriptコードは次のとおりです。
Dim ss, re, rv ss = Is is the cost of of gasoline going up up?. & vbNewLine Set re = New RegExp re.Pattern = /b([az]+) /1/b re.Global = True re.IgnoreCase = True re.MultiLine = True rv = re.Replace(ss,$1)VBScriptコードでは、グローバル、ケース感度、およびマルチラインタグがRegexpオブジェクトの適切なプロパティを使用して設定されていることに注意してください。
交換方法で1ドルを使用して、保存された最初のサブマッチを参照します。複数のサブマッチがある場合は、 2ドル、 3ドルなどで参照し続けることができます。
後方参照の別の使用は、共通のリソースインジケーター(URI)をコンポーネントパーツに分割することです。次のURIをプロトコル(FTP、HTTPなど)、ドメイン名アドレス、およびページ/パスに分解するとします。
http://msdn.microsoft.com:80/scripting/default.htm次の正規表現は、この機能を提供できます。 jscriptの場合:
/(/w+):////([^/:]+)(:/d*)?([^# ]*)/vbscriptの場合:
(/w+):////([^/:]+)(:/d*)?([^# ]*)最初の追加のサブエクスペッションを使用して、Webアドレスのプロトコル部分をキャプチャします。このサブエクスペッションは、コロンと2つの前方スラッシュの前にある単語と一致します。 2番目の追加のサブエクスペッションは、そのアドレスのドメイン名アドレスをキャプチャします。このサブエグポンッションは、「^」、 '/'または ':'文字を含まない文字シーケンスと一致します。 3番目の追加のサブエクスペッションは、ポート番号が指定されている場合、Webサイトポート番号をキャプチャします。このサブエクスペッションは、ゼロ以上の数字とそれに続くコロンが一致します。最後に、4番目の追加のサブエクスポンションは、Webアドレスおよび/またはページ情報によって指定されたパスをキャプチャします。このサブエグポンッションは、「#」またはスペースを除いて、1つと複数の文字と一致します。
上記のURIにこの正規表現を適用した後、サブマッチには次のものが含まれています。
regexp。$ 1にはhttpが含まれています
regexp。$ 2にはmsdn.microsoft.comが含まれています
regexp。$ 3が含まれます:80
regexp。$ 4 Contains /scripting/default.htm