preg_match中的正则表达式为/server\-([^\-\.\d]+)(\d+)/
。有人能帮我理解这意味着什么吗?我看到字符串以server-
开头,但我没有得到([^\-\.\d]+)(\d+)'
答案 0 :(得分:2)
[ ]
- >将方括号内的任何内容与一个字符位置匹配一次,仅匹配一次,例如,[12]表示将目标与1匹配,如果不匹配,则将目标与2匹配,而[0123456789]表示匹配目标中的任何字符范围0到9。
-
- >方括号内的 - (破折号)是'范围分隔符'并允许我们定义范围,在上面的[0123456789]示例中,我们可以将其重写为[0-9]。
您可以在列表中定义多个范围,例如,[0-9A-C]表示检查0到9和A到C(但不是a到c)。
注意:要测试 - 括号内(作为文字)它必须是第一个或最后一个,也就是说,[ - 0-9]将测试 - 和0到9。
^
- >方括号内的^(circumflex或插入符号)否定了表达式(我们将在后面的方括号外看到旋转/插入符号的替代用法),例如,[^ Ff]表示除大小写F和[^ az]之外的任何内容。 ]表示除小写a到z之外的所有内容。
您可以在我获得此信息的来源中查看有关它的更多说明:http://www.zytrax.com/tech/web/regex.htm
如果你想测试,你可以试试这个:http://gskinner.com/RegExr/
答案 1 :(得分:1)
以下是解释:
# 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等程序。
答案 2 :(得分:1)
^
表示不是括号内的以下字符之一
\-
\.
是-
和.
个字符
\d
是一个数字
[^\-\.\d]+
表示括号内的更多字符,因此一个或多个的任何内容都不是-
,.
或数字。< / p>
(\d+)
一个或多个号码
答案 3 :(得分:1)
以下是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
----------------------------------------------------------------------