Perl 正規表現
正規表現 (正規表現) は、文字列に特定の部分文字列が含まれているかどうかを確認したり、一致する部分文字列を置換したり、特定の条件の部分文字列を満たす文字列を削除したりするために使用できる文字列の一致パターンを記述します。
Perl 言語の正規表現機能は非常に強力で、基本的に一般的に使用される言語の中で最も強力です。多くの言語は正規表現のサポートを設計するときに Perl の正規表現を参照します。
Perl の正規表現の 3 つの形式は、一致、置換、および変換です:
一致: m/
置換: s/
変換: tr/
この 3 つの形式が一般的に使用されます=~ または !~ の場合、=~ は一致することを意味し、!~ は一致しないことを意味します。
マッチング演算子
マッチング演算子 m// は、文字列ステートメントまたは正規表現とのマッチングに使用されます。たとえば、スカラー $bar の "run" とマッチングするには、コードは次のとおりです。
#!/usr/bin/perl $bar = "I am php site. welcome to php site."; if ($bar =~ /run/){ print "第一次匹配\n"; }else{ print "第一次不匹配\n"; } $bar = "run"; if ($bar =~ /run/){ print "第二次匹配\n"; }else{ print "第二次不匹配\n"; }
上記を実行します。プログラムの場合、出力結果は次のようになります。
第一次匹配 第二次匹配
パターン マッチング修飾子
パターン マッチングには、次の表に示すように、一般的に使用される修飾子がいくつかあります。 Case
複数行モード | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1回のみ割り当て | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
単一行モード、「.」は「n」と一致します(デフォルトは一致しません) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン内の空白を無視する | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
グローバルマッチ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
グローバルマッチが失敗した後、一致する文字列が再度見つかるようにします | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
修飾子 | 説明 |
---|---|
i | 修飾子に「i」を追加すると、正規表現は大文字と小文字の区別をキャンセルします。つまり、「a」と「A」は同じです。 |
m | デフォルトの通常の開始 "^" と終了 "$" は、通常の文字列のみに使用されます。 "m" が修飾子に追加された場合、開始と終了は文字列の各行を参照します。行 先頭は「^」、末尾は「$」です。 |
o | 式は一度だけ実行されます。 |
修飾子に「s」を追加すると、改行文字を除く任意の文字を表すデフォルトの「.」が、改行文字を含む任意の文字になります。 | |
この修飾子を追加すると、エスケープされていない限り、式内の空白文字は無視されます。 | |
一致する文字列をすべて置き換えます。 | |
文字列を式として置換 |
変換演算子以下は変換演算子に関連する修飾子です
説明 | |
---|---|
不特定のすべてを変換文字 | |
指定された文字をすべて削除 | |
複数の同一の出力文字を1つに圧縮 |
Expression | 説明 |
---|---|
. | は改行を除くすべての文字と一致します |
x? | はx文字列0または1回と一致します |
x* | x 文字列と 0 回以上一致しますが、最小可能回数以上一致します |
x+ | x 文字列と 1 回以上一致しますが、最小可能回数以上一致します |
.* | は任意の文字と一致します0 回以上 |
.+ | は任意の文字に 1 回以上一致します |
{m} | m 個の指定された文字列に正確に一致します |
{m,n} | m 個以上一致し、以下に一致しますn 個以上の指定された文字列 |
{m,} | m 個以上の指定された文字列と一致します |
[] | [] 内の文字と一致します |
[^] | [] と一致しない文字と一致します |
[0-9]はすべての数値文字を一致させる | |
すべての小文字の文字を一致させる | |
すべての非数字以外の文字を一致させる | |
は小文字以外のすべてのアルファベット文字に一致します | |
は | |
は文字の末尾の文字に一致します | |
に一致します数字文字、[0-9] と同じ構文 | |
は複数の数値文字列、および [0-9]+ 構文は同じ | |
非数字、その他はd | |
非数字と同じ、その他はd+ | |
英語の文字または数字の文字列、および[a-zA-Z0 -9]と同じです。構文は次のとおりです。同じ | |
と [a-zA-Z0-9]+ 構文は同じ | |
英語以外の文字または数字の文字列、および [^a-zA-Z0- 9] 構文は同じです | |
と [^a-zA-Z0-9]+ 構文は同じです | |
spaces と [ntrf] 構文は同じです | |
および [ntrf ]+ は | |
非スペースと同じであり、構文は [^ntrf] と同じです | |
は [^ ntrf]+ であり、構文は同じです | |
マッチングは英語の文字と数字によって制限されます 文字列 | |
は英語の文字や数値によって制限されない文字列と一致します | |
は、a 文字、b 文字、または c 文字に一致する文字列と一致します | |
abc を含む文字列と一致します (パターン) () このシンボルは見つかった文字列を記憶します。これは非常に実用的な構文です。最初の () で見つかった文字列は $1 変数または 1 変数になり、2 番目の () 内で見つかった文字列は $2 変数になります。または 2 変数などです。 | |
i このパラメーターは、英語の大文字と小文字が無視されることを意味します。つまり、文字列を照合するときに、英語の大文字と小文字の区別の問題を考慮します。 「*」などの特殊文字をパターン内で検索したい場合は、その特殊文字が無効になるように、文字の前に記号を追加する必要があります |