2012-11-29 22 views
1

例如,对于一个字符串:正则表达式 - 结合贪婪和懒惰模式

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

我想要得到“B”和“C”,这是前第一“主题”的字符串值的值。

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

回答

0

我倾向于使用更多的东西一样:

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

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

+0

它的工作原理。使用这个“([^ /] +)/([^ /] +)/ topic /(.+)”。感谢您的快速响应。 – fkpwolf