我需要在两个正斜杠之间找到所有%20。
example.com/book%20/picture1.jpg
example.com/book%20/picture2.jpg
example.com/book%20/picture3.jpg
example.com/pages/picture%20book1.jpg
example.com/pages/picture%20book2.jpg
example.com/pages/picture%20book3.jpg
它应该找到前3个链接,而不是最后3个链接。
我似乎无法弄明白。
答案 0 :(得分:3)
这满足两个正斜杠之间的要求“%20”
/\/[^/]*%20[^/]*\//
\/ literal "/"
[^/]* every character except for a slash, zero or more occurences
%20 literal "%20"
[^/]* every character except for a slash, zero or more occurences
\/ literal "/"
这样的RE可以用于验证,如果用于匹配,它匹配两个斜杠之间的文本,其中%20
包括前导斜杠和尾随斜杠。
答案 1 :(得分:1)
如果您正在使用支持任意长期查看构造(如.NET)的正则表达式实现,您可以使用
(?<=.*/)%20(?=.*/)
答案 2 :(得分:0)
我在.Net中尝试了这个,它返回了三个第一个链接。我不是一个正则表达式的人,所以这很可能比我的例子更优雅。
(\w*\.*)*/(\w*)*%20(\w*)*/(\w*\.*)*
答案 3 :(得分:0)
@Lekensteyn是对的但跳过了在字符类[^/]*
中转义正斜杠。
而不是:
/\/[^/]*%20[^/]*\//
使用:
/\/[^\/]*%20[^\/]*\//