匹配两个正斜杠之间的特定字符串

时间:2011-06-15 09:24:59

标签: regex

我需要在两个正斜杠之间找到所有%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个链接。

我似乎无法弄明白。

4 个答案:

答案 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[^\/]*\//