【发布时间】:2012-04-10 17:26:23
【问题描述】:
我遇到了 Regex 的问题...我必须匹配共享点 URL。我需要匹配“最短”
类似:
http://aaaaaa/sites/aaaa/aaaaaa/
m = Regex.Match(URL, ".+/sites/.+/");
m.Value 等于整个字符串...
我怎样才能让它匹配
http://aaaaaaa/sites/aaaa/
没有别的了??
非常感谢!
【问题讨论】:
我遇到了 Regex 的问题...我必须匹配共享点 URL。我需要匹配“最短”
类似:
http://aaaaaa/sites/aaaa/aaaaaa/
m = Regex.Match(URL, ".+/sites/.+/");
m.Value 等于整个字符串...
我怎样才能让它匹配
http://aaaaaaa/sites/aaaa/
没有别的了??
非常感谢!
【问题讨论】:
.+ 是贪心的,所以它会在停止之前匹配尽可能多的字符。改成.+?,比赛会尽快结束:
m = Regex.Match(URL, ".+/sites/.+?/");
【讨论】:
尝试使正则表达式匹配除 / 之外的所有内容,而不是简单的所有内容。这是通过使用字符类原子[^] 的非形式来完成的。
m = Regex.Match(URL, ".+/sites/[^/]+/");
【讨论】:
.+/sites/[^/]+?/