Latest web development tutorials

Perlの正規表現

正規表現(正規表現)は、文字列が交換または条件を削除するには、サブストリングに一致する特定の部分が含まれているかどうかを確認するために使用することができます文字列のセットを説明する文字列から部分と一致しますように。

言語のPerlの正規表現機能は、基本的には、最も強力な共通の言語、彼らが参照Perlの正規表現で多くの言語設計の正規表現のサポートは非​​常に強力です。

一致しているPerlの正規表現の三つの形式は、交換と変換:

  • マッチ:メートル/ /(またと略記/ /省略メートル)

  • 置き換え:S / / /

  • 変換:TR / / /

これらの三つの形式と、一般=〜や!〜=〜はマッチを表し用いることである!〜彼らは一致していないと述べました。


マッチ演算子

次のようにマッチ演算子メートル//は、「ラン」のスカラー$バーを一致させるために、例えば、文字列や正規表現のステートメントと一致するコードを使用しました:

#!/usr/bin/perl

$bar = "I am w3big site. welcome to w3big site.";
if ($bar =~ /run/){
   print "第一次匹配\n";
}else{
   print "第一次不匹配\n";
}

$bar = "run";
if ($bar =~ /run/){
   print "第二次匹配\n";
}else{
   print "第二次不匹配\n";
}

上記のプログラムは、出力は次のようになります。

第一次匹配
第二次匹配

パターン・マッチング修飾子

次のように修飾子に一致するいくつかの一般的なパターンがあります:

修飾子 説明
大文字モードを無視
メートル マルチラインモード
O 一度だけ割り当て
シングルラインモード、 "。"マッチ "\ n"は(デフォルトでは一致していません)
X ブランク・モードを無視
グラム グローバルマッチ
コンゴ グローバルマッチングの障害が発生した後、再度、一致する文字列を検索することができます

正規表現の変数

Perlは3つの特別な変数名の値と一致するように処理した後に存在します:

  • 文字列照合部の前部:$ `
  • $&:マッチング文字列
  • $ ':残りの文字列のためではない試合

一緒に、これらの三つの変数の場合は、元の文字列を取得します。

例としては、次のとおりです:

#!/usr/bin/perl

$string = "welcome to w3big site.";
$string =~ m/run/;
print "匹配前的字符串: $`\n";
print "匹配的字符串: $&\n";
print "匹配后的字符串: $'\n";

上記のプログラムの出力は、次のとおりです。

匹配前的字符串: welcome to 
匹配的字符串: run
匹配后的字符串: oob site.

置換演算子

置換演算子の///演算子は、指定した文字列を置換する新しい文字列の使用の拡大を一致させることです。 次のように基本的な形式は次のとおりです。

s/PATTERN/REPLACEMENT/;

パターン、文字列を代替するための代替を照合するパターン。

たとえば、我々は次の文字列に置き換えられます「グーグルは "" w3big」です。

#!/usr/bin/perl

$string = "welcome to google site.";
$string =~ s/google/w3big/;

print "$string\n";

上記のプログラムの出力は、次のとおりです。

welcome to w3big site.

交換作業修飾子

次のように操作修飾子を置き換えます。

修飾子 説明
あなたが追加した場合、「i」は修飾語で、その後、定期的に大文字と小文字の区別は、 ""と ""同じですが、キャンセルされます。
メートル 各行の先頭に "^"で、デフォルトはちょうどその各行の先頭と末尾に文字列を参照し、「メートル」改質剤と結合された場合は通常の文字列のためのものである通常の "^"と終了 "$"を開始します最後は「$」です。
O 式は一度だけ実行されます。
あなたは、モディファイアで、デフォルトの「s」を追加した場合。 ""改行以外の任意の文字の代わりに改行さを含め、任意の文字になります!
X 修飾子を追加する場合は、エスケープされていない限り、表現の空白文字は、無視されます。
グラム 一致するすべての文字列を置換します。
電子 置換文字列式として

変換演算子

以下は、変換演算子関連する修飾子です。

修飾子 説明
C言語 すべての文字の変換が指定されていません
D 指定されたすべての文字を削除します。
文字複数の縮小同じ出力

次の例では、すべて小文字で変数$文字列は大文字に変換しました:

#!/usr/bin/perl 

$string = 'welcome to w3big site.';
$string =~ tr/a-z/A-z/;

print "$string\n";

上記のプログラムの出力は、次のとおりです。

WELCOME TO w3big SITE.

次の例では、削除した文字を繰り返す/ s変数$文字列を使用しています。

#!/usr/bin/perl

$string = 'w3big';
$string =~ tr/a-z/a-z/s;

print "$string\n";

上記のプログラムの出力は、次のとおりです。

runob

より多くの例:

$string =~ tr/\d/ /c;     # 把所有非数字字符替换为空格
$string =~ tr/\t //d;     # 删除tab和空格
$string =~ tr/0-9/ /cs    # 把数字间的其它字符替换为一个空格。

もっと正規表現ルール

表現 説明
改行以外のすべての文字にマッチ
X? 試合0または文字列x
X * 試合0回以上のXの文字列ではなく、可能な一致の最小数
X + マッチ1回以上のx文字列ではなく、可能な一致の最小数
。* 任意の文字に一致0回以上の繰り返し
。+ 任意の文字が1回以上一致
{M} 正確メートルの指定された文字列に一致
{M、N} マッチのm以上以下指定された文字列のn
{M} マッチメートル以上の指定された文字列
[] これは【内の文字に一致します]
[^] マッチは、[]内の文字を満たしていません
[0-9] すべての数字と一致
[AZ] すべて小文字のアルファベットの文字を一致させます
[^ 0-9] すべての数字以外の文字を一致させます
[^ AZ] 任意の小文字のアルファベット文字に一致します
^ 先頭にマッチする文字
$ 文字の最後の文字に一致します
\ D 数字、文字、及び[0-9]と同じ構文に一致します
\ D + 複数の数値文字列に一致し、[0-9] +構文など
\ D \ dを有する他、非デジタル
\ D + \ dが+と他の、非デジタル
\ W 文字や数字の文字列を、[a-zA-Z0-9]は構文として
\ W + そして、[-ZA-Z0-9] +構文など
\ W 英語以外の文字や数字、文字列、および[^-ZA-Z0-9]同じ構文
\ W + そして、[^-ZA-Z0-9] +構文など
\ S スペース、および[\ nは\トン\ rを\ f]は同じ構文
\ S + そして、[\ nは\トン\ rを\ f]の+など
\ S 非スペース、および[^ \ nを\ tの\ rをするの\ f]は同じ構文
\ S + そして、[^ \ n個の\トンの\ r個の\のF] +構文など
\ B 英文字、数字境界の文字列マッチング
\ B アルファベット、数値の境界文字列で不一致
| B | C 文字またはbまたはcの文字にマッチする文字列に沿って
ABC ABC一致する文字列(パターン)(含まれている)は、文字列を見つけるために、この記号を覚えているだろう、非常に便利な構文です。この変数は$ 1または\ 1になるが見つかりました(内)最初の文字列変数、および第二(内側)は、というようにダウン$ 2または\ 2変数に文字列変数を発見した、と。
/パターン/ I 私は、このパラメータは、文字の前に追加するつまり、一致文字列、英語の場合は質問を無視して。\あなたは、パターンモードで特殊文字を検索する場合、などが "*"、持っているだろうと、英語で大文字小文字を無視示し、 \記号で、これは特殊文字は失敗できるようになります