preg_match の正規表現は として与えられ/server\-([^\-\.\d]+)(\d+)/
ます。誰かがこれが何を意味するのか理解するのを手伝ってくれますか? 文字列がで始まるのがわかりますが、server-
取得できません([^\-\.\d]+)(\d+)'
4 に答える
[ ]
-> 1 文字の位置に対して角括弧内のすべてのものと 1 回だけ一致します。たとえば、[12] はターゲットが 1 に一致することを意味し、それが一致しない場合はターゲットが 2 に一致することを意味し、[0123456789] は任意の文字に一致することを意味します0 から 9 の範囲。
-
-> 角括弧内の - (ダッシュ) は「範囲区切り」であり、範囲を定義できます。上記の [0123456789] の例では、[0-9] と書き換えることができます。
リスト内に複数の範囲を定義できます。たとえば、[0-9A-C] は、0 から 9 および A から C をチェックすることを意味します (ただし、a から c はチェックしません)。
注: - を (リテラルとして) ブラケット内でテストするには、最初または最後に来る必要があります。つまり、[-0-9] は - と 0 から 9 をテストします。
^
-> 角括弧内の ^ (サーカムフレックスまたはキャレット) は式を否定します (角括弧の外側のサーカムフレックス/キャレットの別の使用法については後で説明します)。たとえば、[^Ff] は、大文字または小文字の F および [ ^az] は、小文字の a から z を除くすべてを意味します。
この情報を入手したソースで、それに関する詳細な説明を確認できます: http://www.zytrax.com/tech/web/regex.htm
そして、テストしたい場合は、これを試すことができます: http://gskinner.com/RegExr/
これがperlモジュールによる説明ですYAPE::Regex::Explain
The regular expression:
(?-imsx:server\-([^\-\.\d]+)(\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):
----------------------------------------------------------------------
server 'server'
----------------------------------------------------------------------
\- '-'
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
[^\-\.\d]+ any character except: '\-', '\.', digits
(0-9) (1 or more times (matching the
most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
( group and capture to \2:
----------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
) end of \2
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
説明は次のとおりです。
# server\-([^\-\.\d]+)(\d+)
#
# Match the characters “server” literally «server»
# Match the character “-” literally «\-»
# Match the regular expression below and capture its match into backreference number 1 «([^\-\.\d]+)»
# Match a single character NOT present in the list below «[^\-\.\d]+»
# Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
# A - character «\-»
# A . character «\.»
# A single digit 0..9 «\d»
# Match the regular expression below and capture its match into backreference number 2 «(\d+)»
# Match a single digit 0..9 «\d+»
# Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
正規表現を使用するつもりで、いくらかの資金を費やす意思がある場合は、 RegexBuddyなどのプログラムを使用できます。
この無料の Web ベースの説明ユーティリティも使用できます。
^
括弧内の次の文字のいずれでもないことを意味します
\-
\.
は-
と.
文字です
\d
は数字です
[^\-\.\d]+
は括弧内の複数の文字を意味するため、 、または数字以外の1 つまたは複数の文字を意味します。-
.
(\d+)
1 つ以上の数字