正则表达式 - 结合贪婪和懒惰模式

时间:2012-11-29 07:56:25

标签: regex

例如,对于字符串:

http://www/host/a/b/c/topic/d/e/f/topic/last.html

我希望获得“b”和“c”的值,它们是FIRST“主题”之前的字符串值。

如果我使用:.+/(.+)/(.+)/topic/(.+),我会得到“e”和“f”。我知道它是贪婪的模式,所以它匹配第二个“主题”。但是,如果我改为惰性模式,如.+?/(.+?)/(.+?)/topic/(.+),它仍然无效。

2 个答案:

答案 0 :(得分:0)

我倾向于使用更像的东西:

[^/]+/([^/]+)/([^/]+)/topic/(.+)

这个想法不是匹配任何字符,而是匹配下一个斜杠。括号[]定义了一个字符类,代字号~,意思是'不',所以[^/]匹配除了斜杠之外的所有内容。

答案 1 :(得分:0)

如何使用它?

^.+?/([^/]+)/([^/]+)/topic

以下是演示:http://rubular.com/r/F97qwqjLRj