【发布时间】:2015-07-07 10:47:38
【问题描述】:
我有一个字符串:
/foo/bar
以及以下正则表达式:
/(?P<g1>.*)/(?P<g2>.*)$
通过模式匹配字符串并捕获两个组:
g1 = foo
g2 = 条形
如何强制进行可选匹配?
我需要将 "/bar" 捕获到 g1 = "bar" (但不是 /bar/)如果没有第二组可以匹配?
(用regex101测试它)
谢谢
【问题讨论】:
-
不清楚,你能解释一下吗。
-
1. "/foo" 转到组 g1。 2. "/foo/" 不匹配。 3. "foo/bar" 匹配 g1 = foo, g2 = bar。
-
嗯,这很难理解,让我猜猜……
/(?P<g1>[^/]*)/?(?P<g2>[^/]*)?(?<!/)$怎么样? -
是的,它对 /foo/bar 和 /foo 可以正常工作。问题是如果我有:/foo/bar/foo2/bar2.这匹配 foo2 和 bar2,我预计没有匹配