2011-06-15 154 views
0

我需要在兩個正斜槓之間找到所有%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

顯示你當前的代碼,請。 – steenhulthin 2011-06-15 09:26:35

+2

也許是因爲最後三個不在兩個正斜槓之間? – zoul 2011-06-15 09:27:23

回答

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兩條斜線之間的文本包括在前緣和匹配尾隨斜線。

+0

即時嘗試在UltraEdit中使用它,它似乎並不工作 – Jet 2011-06-15 16:00:53

+0

根據http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/regular_expressions.html翻譯:'/ [〜/] ++ ^%20 [ 〜/] ++ /' – Lekensteyn 2011-06-15 16:11:44

+0

這就是非常接近!它繼續到下一行,直到它擊中另一個正斜槓.... – Jet 2011-06-15 16:41:59

1

如果您使用的是支持任意長的環視結構(如.NET)正則表達式實行,你可以使用

(?<=.*/)%20(?=.*/) 
0

我想這一個在.Net和它返回的三個第一環節。我不是一個正則表達式的人,所以這很可能比我的例子更加優雅。

(\w*\.*)*/(\w*)*%20(\w*)*/(\w*\.*)* 
0

@Lekensteyn是正確的,但略向前逃逸的字符類[^/]*斜槓。

相反的:

/\/[^/]*%20[^/]*\// 

使用:

/\/[^\/]*%20[^\/]*\// 
+0

這是問題的答案。 – JuanLigas 2014-09-24 18:46:13

相關問題