正規表現 (正規表現) は、文字列に特定の部分文字列が含まれているかどうかを確認したり、一致する部分文字列を置き換えたり、特定の文字列から特定の条件を満たす部分文字列を抽出したりするために使用できる文字列の一致パターンを記述します。
Perl 言語の正規表現機能は非常に強力で、基本的に一般的に使用される言語の中で最も強力です。多くの言語は正規表現のサポートを設計する際に Perl の正規表現を参照します。
Perl 正規表現の 3 つの形式は、一致、置換、および変換です。
一致: m/
置換: s/
変換: tr/
これら 3 つの形式は通常、 =~または!~とともに使用されます。 =~ は一致することを意味し、 !~ は一致しないことを意味します。
一致演算子 m// は、文字列ステートメントまたは正規表現と一致するために使用されます。たとえば、スカラー $bar の「run」と一致する場合、コードは次のようになります。
上記のプログラムを実行すると、出力結果は次のようになります。
第一試合 第二試合
次の表に示すように、パターン マッチングには一般的に使用される修飾子がいくつかあります。
修飾子 | 説明する |
---|---|
私 | パターン内の大文字と小文字を無視する |
メートル | 複数行モード |
ああ | 値を一度だけ割り当てます |
s | 単一行モード、「.」は「n」と一致します(デフォルトは一致しません) |
× | パターン内の空白を無視する |
g | グローバルマッチ |
cg | グローバル一致が失敗した後、一致する文字列を再度検索することができます。 |
perl が処理されると、一致した値に対して 3 つの特別な変数名が存在します。
$`:一致する文字列の前の部分
$&:一致する文字列
$':残りの一致する文字列はまだありません
これら 3 つの変数を組み合わせると、元の文字列が得られます。
例は次のとおりです。
上記のプログラムを実行した出力結果は次のようになります。
マッチング前の文字列: マッチング前の文字列: マッチング後の文字列の実行: oob サイトへようこそ。
置換演算子 s/// は、一致演算子の拡張機能であり、指定された文字列を新しい文字列に置き換えます。基本的な形式は次のとおりです。
s/パターン/置換/;
PATTERN は一致するパターン、REPLACEMENT は置換文字列です。
たとえば、次の文字列の「google」を「codercto」に置き換えます。
上記のプログラムを実行した出力結果は次のようになります。
codercto サイトへようこそ。
置換操作修飾子を次の表に示します。
修飾子 | 説明する |
---|---|
私 | 「i」を修飾子に追加すると、正規表現では大文字と小文字が区別されなくなります。つまり、「a」と「A」は同じになります。 |
メートル | デフォルトの通常の開始 "^" と終了 "$" は、通常の文字列のみに使用されます。修飾子に "m" が追加された場合、開始と終了は文字列の各行を参照します。各行の先頭は "^" です。 "、"$"で終わります。 |
ああ | 式は 1 回だけ実行されます。 |
s | 修飾子に「s」を追加すると、改行文字以外の文字を表すデフォルトの「.」が改行文字を含む任意の文字になります。 |
× | この修飾子を追加すると、エスケープされていない限り、式内の空白文字は無視されます。 |
g | 一致する文字列をすべて置き換えます。 |
e | 文字列を式として置換 |
変換演算子に関連する修飾子は次のとおりです。
修飾子 | 説明する |
---|---|
c | 指定されていないすべての文字を変換する |
d | 指定した文字をすべて削除します |
s | 複数の同一の出力文字を 1 つに圧縮します。 |
次の例では、変数 $string 内のすべての小文字を大文字に変換します。
#!/usr/bin/perl $string = 'codercto サイトへようこそ。';$string =~ tr/az/Az/;print "$stringn";
上記のプログラムを実行した出力結果は次のようになります。
CODERCTO サイトへようこそ。
次の例では、/s を使用して、変数 $string から繰り返される文字を削除します。
上記のプログラムを実行した出力結果は次のようになります。
ルノブ
その他の例:
$string =~ tr/d/ /c; # 数字以外の文字をすべてスペースに置き換えます $string =~ tr/t //d; # タブとスペースを削除します $string =~ tr/0-9/ /cs # 数字の間の他の文字をスペースに置き換えます。
表現 | 説明する |
---|---|
。 | 改行文字を除くすべての文字に一致します |
×? | x 文字列 0 または 1 回一致 |
×* | x 文字列と 0 回以上一致しますが、可能な最小回数だけ一致します |
x+ | x 文字列と 1 回以上一致しますが、可能な最小回数だけ一致します |
.* | 任意の文字に 0 回以上一致します |
.+ | 任意の文字を 1 回以上一致させる |
{男} | 指定された m 個の文字列に正確に一致します |
{m、n} | m 個以上、n 個未満の指定された文字列と一致します |
{m,} | m 個以上の指定された文字列と一致する |
[] | []内の文字と一致します |
[^] | [] に一致しない文字に一致します |
[0-9] | すべての数字と一致します |
[az] | すべての小文字のアルファベットに一致します |
[^0-9] | 数字以外のすべての文字に一致します |
[^az] | 小文字以外のすべてのアルファベット文字に一致します |
^ | で始まる文字と一致します |
$ | 文字の末尾の文字と一致します |
d | [0-9] と同じ構文の数字に一致します。 |
d+ | 複数の数値文字列に一致します。[0-9]+ と同じ構文です。 |
D | 数値ではない、他と同じd |
D+ | 数値以外、その他の場合は d+ と同じ |
w | 英語の文字または数字の文字列。[a-zA-Z0-9_] と同じ構文 |
w+ | [a-zA-Z0-9_]+ と同じ構文 |
W | 英語以外の文字または数字の文字列。[^a-zA-Z0-9_] と同じ構文 |
W+ | [^a-zA-Z0-9_]+ と同じ構文 |
s | スペース、[ntrf] と同じ構文 |
s+ | [ntrf]+ と同じ |
S | スペース以外、[^ntrf] と同じ構文 |
S+ | [^ntrf]+ と同じ構文 |
b | 英語の文字と数字で囲まれた文字列と一致します |
B | 英語の文字または数値で囲まれていない文字列と一致します。 |
a|b|c | a 文字、b 文字、または c 文字に一致する文字列と一致します。 |
ABC | abc () を含む文字列 (パターン) と一致します。このシンボルは見つかった文字列を記憶します。これは非常に実用的な構文です。最初の () で見つかった文字列は $1 変数または 1 変数になり、2 番目の () で見つかった文字列になります。 $2 変数または 2 変数などになります。 |
/パターン/i | i このパラメータは、英語の大文字と小文字を無視することを意味します。つまり、文字列を照合するときに、英語の大文字と小文字の問題は考慮されません。 パターン モードで「*」などの特殊文字を検索したい場合は、この前に追加する必要があります。文字 特殊文字を無効にするには、 記号を使用します。 |