正規表現を含むコードを読んでいて、問題が発生しています。
誰かがそれを説明し、それが解析するテキストの例を挙げてもらえますか?
if(/\|\s*STUFF(\d+)\s*\|\s*STUFF(\d+)/)
{
$a = $1;
$b = $2;
}
一致する文字列の1つは|STUFF1|STUFF2
です。
(?-imsx:\|\s*STUFF(\d+)\s*\|\s*STUFF(\d+))
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\| '|'
----------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
STUFF 'STUFF'
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
\| '|'
----------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
STUFF 'STUFF'
----------------------------------------------------------------------
( group and capture to \2:
----------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
) end of \2
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
\|\s*STUFF(\d+)\s*\|\s*STUFF(\d+)
\|
リテラルパイプ文字を探します|
。
\s*
任意の数(0個以上)の空白文字を探します。
STUFF
文字列を探すSTUFF
(\d+)
任意の桁数(1つ以上)を探し、それらをに保存します$1
。
\s*
任意の数の空白文字(0個以上)を探します
次に1回繰り返し、次の桁シーケンスをに保存し$2
ます。
正規表現が一致する場合、それを認識しており、定義する必要$1
があります(つまり、値があります)。$2
その場合、$1
変数$a
と$2
にを割り当てます$b
。
照合する明示的な文字列が提供されていないため、$_
変数が暗黙的に使用されます。
テキストの例:
foo bar |STUFF123|STUFF456 baz bar foo
と
foo |
STUFF0
|STUFF1234567890bar