perl 正则表达式 - 模式匹配
perl regex - pattern matching
谁能解释一下下面是做什么的?
$name=~m,common/([^/]+)/run.*/([^/]+)/([^/]+)$,;
common
、run
和 /
自己匹配。
()
捕获。
[^/]+
匹配 1 个或多个不是 /
. 的字符
.*
匹配 0 个或多个不是换行符的字符。[1]
$
等同于 (\n?\z
).[2]
\n
可选择匹配换行符。
\z
匹配字符串结尾。
我认为它正在尝试匹配以下一种或两种形式的路径:
.../common/<em><strong>XXX</strong></em>/runYYY/<em><strong> XXX</strong></em>/<em><strong>XXX</strong></em>
普通/<em><strong>XXX</strong></em>/runYYY/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
在哪里
XXX
是至少一个不包含 /
. 字符的序列
YYY
是不包含 /
. 的任意数量的字符序列(包括零)
然而,它匹配的不止这些。
- 匹配
不常见/<em><strong>XXX</strong></em>/runYYY/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
- 匹配
普通/<em><strong>XXX</strong></em>/runYYY/XXX/XXX/XXX/XXX/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
粗体部分被捕获(调用者可用)。
- 未使用
s
标志时。
- 未使用
m
标志时。
谁能解释一下下面是做什么的?
$name=~m,common/([^/]+)/run.*/([^/]+)/([^/]+)$,;
common
、run
和/
自己匹配。()
捕获。[^/]+
匹配 1 个或多个不是/
. 的字符
.*
匹配 0 个或多个不是换行符的字符。[1]$
等同于 (\n?\z
).[2]\n
可选择匹配换行符。\z
匹配字符串结尾。
我认为它正在尝试匹配以下一种或两种形式的路径:
.../common/<em><strong>XXX</strong></em>/runYYY/<em><strong> XXX</strong></em>/<em><strong>XXX</strong></em>
普通/<em><strong>XXX</strong></em>/runYYY/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
在哪里
XXX
是至少一个不包含/
. 字符的序列
YYY
是不包含/
. 的任意数量的字符序列(包括零)
然而,它匹配的不止这些。
- 匹配
不常见/<em><strong>XXX</strong></em>/runYYY/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
- 匹配
普通/<em><strong>XXX</strong></em>/runYYY/XXX/XXX/XXX/XXX/<em><strong>XXX</strong></em>/<em><strong>XXX</strong></em>
粗体部分被捕获(调用者可用)。
- 未使用
s
标志时。 - 未使用
m
标志时。