perl (実際には PDL) プログラムで次のステートメントを見つけました。
/\/([\w]+)$/i;
perlプログラミングの見習いである私のために、誰かがこれを解読できますか?
確かに、私はそれを裏返しに説明します:
\w
-単語で使用できる単一の文字に一致します(英数字と「_」)
[...]
-角かっこ内の1文字に一致します
[\w]
-単語で使用できる単一の文字に一致します(ここでは冗長です)
+
-前の文字と一致し、可能な限り繰り返しますが、少なくとも1回は出現する必要があります。
[\w]+
-単語文字のグループに何度も一致します。これで単語が見つかります。
(...)
-グループ化。後で使用するために、この文字のセットを覚えておいてください。
([\w]+)
-単語に一致し、後で使用するために覚えておいてください
$
-行末。行末の何かに一致する
([\w]+)$
-行の最後の単語と一致し、後で使用するために覚えておいてください
\/
-単一のスラッシュ文字'/'。スラッシュは特殊なので、バックスラッシュでエスケープする必要があります。
\/([\w]+)$
-スラッシュ「/」の後の行の最後の単語と一致し、後で使用するためにその単語を覚えておいてください。これはおそらく、パスからディレクトリ/ファイル名を取得しています。
/.../
-構文に一致
/.../i
--iは大文字と小文字を区別しないことを意味します。
すべて一緒に今:
/\/([\w]+)$/i;
-行の最後の単語と一致し、後で使用できるように覚えておきます。単語はスラッシュの後に来る必要があります。基本的に、絶対パスからファイル名を取得します。大文字と小文字を区別しない部分は関係ありません\w
。すでに両方の大文字と小文字が一致します。
Perl正規表現の詳細については、こちらをご覧ください:http: //www.troubleshooters.com/codecorn/littperl/perlreg.htm
そして、JRFergusonが指摘したように、YAPE :: Regex :: Explainは、正規表現をトークン化し、その部分を説明するのに役立ちます。
/\/([\w]+)$/i;
これは正規表現であり、完全なステートメントの場合は$_
、次のように変数に適用されます。
$_ =~ /\/([\w]+)$/i;
スラッシュ\/
、英数字の文字列\w+
、行末を検索します$
。()
また、最終的に変数に含まれる英数字の文字列もキャプチャします$1
。最後に、/i
大文字と小文字を区別しないようにしますが、この場合は効果がありません。
正規表現を「説明」するのには役立ちませんが、テスト ケースがあれば、ダミアンの新しいRegexp::Debugger
ユーティリティは、マッチング中に実際に何が起こるかを監視するための優れたユーティリティです。それをインストールrxrx
し、コマンド ラインで実行してデバッガーを起動し、/\/([\w]+)$/
and '/r'
(たとえば) を入力して、最後m
にマッチングを開始します。その後、Enter キーを繰り返し押すことで、デバッガーをステップ実行できます。すごくかっこいい!
Online Regex Analyzerは言及に値します。これは、正規表現の意味を説明するリンクであり、記録のためにここに貼り付けられています。
/ (slash)
--+
Repeat | (in GroupNumber:1)
AnyCharIn[ WordCharacter] one or more times |
--+
EndOfLine
これは$_
、スラッシュの後に 1 つ以上の文字 (大文字と小文字を区別しない) が続き、それを$1
$_ value then $1 value
------------------------------
"/abcdes" | "abcdes"
"foo/bar2" | "bar2"
"foobar" | undef # no slash so doesn't match