VBScript-正規表現

正規表現は、パターンを形成する一連の文字であり、主に検索と置換に使用されます。パターンを作成する目的は、特定の文字列を照合することです。これにより、開発者は条件に基づいて文字を抽出し、特定の文字を置き換えることができます。

RegExpオブジェクト

RegExpオブジェクトは、開発者が文字列のパターンを一致させるのに役立ち、プロパティとメソッドは、正規表現を簡単に操作するのに役立ちます。JavaScriptのRegExpに似ています

プロパティ

  • Pattern − Patternメソッドは、正規表現を定義するために使用される文字列を表します。正規表現オブジェクトを使用する前に設定する必要があります。

  • IgnoreCase− trueまたはfalseの場合、文字列内のすべての可能な一致に対して正規表現をテストする必要があるかどうかを表すブールプロパティ。明示的に指定されていない場合、IgnoreCase値はFalseに設定されます。

  • Global−文字列内のすべての可能な一致に対して正規表現をテストする必要があるかどうかを表すブールプロパティ。明示的に指定されていない場合、グローバル値はFalseに設定されます。

メソッド

  • Test(search-string)-Testメソッドは、引数として文字列を受け取り、正規表現が文字列と正常に一致する場合はTrueを返し、それ以外の場合はFalseを返します。

  • Replace(search-string、replace-string)-Replaceメソッドは2つのパラメーターを取ります。検索が成功すると、一致するものがreplace-stringに置き換えられ、新しい文字列が返されます。一致するものがない場合は、元の検索文字列が返されます。

  • Execute(search-string)-ExecuteメソッドはReplaceと同じように機能しますが、一致が成功するたびにMatchオブジェクトを含むMatchesコレクションオブジェクトを返す点が異なります。元の文字列は変更されません。

コレクションオブジェクトに一致

Matchesコレクションオブジェクトは、Executeメソッドの結果として返されます。このコレクションオブジェクトには、0個以上のMatchオブジェクトを含めることができ、このオブジェクトのプロパティは読み取り専用です。

  • Count − Countメソッドは、コレクション内の一致オブジェクトの数を表します。

  • Item − Itemメソッドを使用すると、matchesコレクションオブジェクトからmatchオブジェクトにアクセスできます。

一致オブジェクト

Matchオブジェクトは、matchesコレクションオブジェクトに含まれています。これらのオブジェクトは、文字列の検索後に成功した一致を表します。

  • FirstIndex−一致が発生した元の文字列内の位置を表します。このインデックスはゼロベースです。つまり、文字列の最初の位置は0です。

  • Length −一致した文字列の全長を表す値。

  • Value−一致した値またはテキストを表す値。これは、Matchオブジェクトにアクセスするときのデフォルト値でもあります。

パターンパラメータのすべて

パターン構築はPERLに似ています。正規表現を使用する場合、パターンの構築は最も重要です。このセクションでは、さまざまな要因に基づいてパターンを作成する方法について説明します。

位置マッチング

位置マッチングの重要性は、正規表現を正しい場所に配置することを保証することです。

シンボル 説明
^ 文字列の先頭のみに一致します。
$ 文字列の末尾のみに一致します。
\ b 任意の単語境界に一致します
\ B 単語以外の境界に一致します

リテラルマッチング

アルファベット、数字、特殊文字、さらには10進数、16進数など、あらゆる形式の文字をリテラルとして扱うことができます。正規表現のコンテキスト内ですでに特別な意味を持つ文字はほとんどないため、エスケープシーケンスを使用してエスケープする必要があります。

シンボル 説明
英数字 アルファベット文字と数字のみに一致します。
\ n 新しい行に一致します。
\ [ 一致する[リテラルのみ
\] 一致する]リテラルのみ
\( 一致(リテラルのみ
\) 一致する)リテラルのみ
\ t 水平タブに一致
\ v 垂直タブに一致
\ | マッチ| リテラルのみ
\ { 一致する{リテラルのみ
\} }リテラルのみに一致
\\ \リテラルのみに一致
\? 一致しますか?リテラルのみ
\ * 一致*リテラルのみ
\ + 一致+リテラルのみ
\。 一致します。リテラルのみ
\ b 任意の単語境界に一致します
\ B 単語以外の境界に一致します
\ f フォームフィードと一致します
\ r キャリッジリターンに一致
\ xxx 8進数xxxのASCII文字に一致します。
\ xdd 16進数のddのASCII文字に一致します。
\ uxxxx UNICODEリテラルxxxxのASCII文字に一致します。

一致する文字クラス

文字クラスは、カスタマイズされたグループ化によって形成され、[]中括弧で囲まれたパターンです。リストに含めるべきではない文字クラスを予期している場合は、負の記号(キャップ​​^)を使用してその特定の文字クラスを無視する必要があります。

シンボル 説明
[xyz] 文字セットに含まれる文字クラスのいずれかに一致します。
[^ xyz] 文字セットに含まれていない文字クラスのいずれかに一致します。
\ n以外のすべての文字クラスに一致します
\ w 任意の単語文字クラスに一致します。[a-zA-Z_0-9]と同等
\ W 単語以外の文字クラスに一致します。[^ a-zA-Z_0-9]と同等
\ d 任意の数字クラスに一致します。[0-9]に相当します。
\ D 数字以外の文字クラスに一致します。[^ 0-9]と同等です。
\ s 任意のスペース文字クラスに一致します。[\ t \ r \ n \ v \ f]と同等
\ S 任意のスペース文字クラスに一致します。[^ \ t \ r \ n \ v \ f]と同等

繰り返しマッチング

繰り返しマッチングにより、正規表現内で複数の検索が可能になります。また、正規表現で要素が繰り返される回数も指定します。

シンボル 説明
* 指定された正規表現の0回以上の出現に一致します。{0、}と同等です。
+ 指定された正規表現の1つ以上のオカレンスに一致します。{1、}に相当します。
指定された正規表現の0回または1回の出現に一致します。{0,1}に相当します。
{バツ} 指定された正規表現のx回の出現回数に正確に一致します。
{バツ、} 指定された正規表現の少なくともx回以上の出現に一致します。
{x、y} 指定された正規表現の出現回数をxからyに一致させます。

交替とグループ化

交互とグループ化は、開発者が正規表現内の複雑な句を特に処理する際に、より複雑な正規表現を作成するのに役立ちます。これにより、優れた柔軟性と制御が得られます。

シンボル 説明
0 句をグループ化して句を作成します。「(xy)?(z)」は「xyz」または「z」と一致します。
| 交替は、1つの正規表現句を組み合わせてから、個々の句のいずれかに一致します。「(ij)|(23)|(pq)」は「ij」または「23」または「pq」と一致します。

正規表現の作成

以下に、正規表現の作成方法を明確に説明するいくつかの例を示します。

正規表現 説明
「^ \ s * ..」および「.. \ s * $」 1行に先頭と末尾のスペース文字をいくつでも含めることができることを表します。
「((\ $ \ s?)|(#\ s?))?」 オプションの$または#記号とそれに続くオプションのスペースを表します。
"((\ d +(\。(\ d \ d)?)?))" 少なくとも1桁が存在し、その後にオプションの小数が続き、小数の後に2桁が続くことを表します。

次の例では、ユーザーが電子メールIDを入力したかどうかを確認します。この形式は、電子メールID、「@」、ドメイン名の順に一致する必要があります。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "[email protected]"
         Set re = New RegExp
         With re
            .Pattern    = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>