2017-08-01 620 views
-4

我想提出一個匹配URL路徑中特定路徑段(比如說/ foo)的正則表達式。正則表達式應適用於網址,其中/結尾可能發生FOO,開始或其間的但不是當它是一個字正則表達式以匹配URL中的特定路徑段

http://localhost:9001/v1/blobs/foo的一部分 - > [30,34] /富

http://localhost:9001/v1/blobs/foobar - - >不匹配

http://localhost:9001/v1/blobs/foo/bar - > [30,34] /富

解決方案:

的起作用的一個是: -

/foo(?=/|$) 

http://fiddle.re/zxhxzn

+0

@anubhava不用於HTTP工作://本地主機:9001/V1 /斑點/富/酒吧,在那裏它的整個匹配/ foo/bar – VDev

+0

我不明白反對票。這個問題有什麼問題。 – VDev

+1

我沒有低調,但這是因爲你沒有表現出你的嘗試。 – anubhava

回答

0

這爲我工作:

爲了配合整條生產線:

".*/foo(/|$).*" 

爲了配合剛剛/富

"(/foo)(?=/|$)" 

它不會如果你有足夠的空間,那就工作吧在foo之後的行,如果需要,可以用「* $」替換$。

+0

它不適用於http:// localhost:9001/v1/blobs/foo/bar,它與整個/ foo/bar匹配,而不僅僅是/ foo – VDev

+0

如果您使用的是匹配器,並且您不想匹配整行然後「(/ foo)(/ | $)」應該工作,你必須做matcher.group(1),我不認爲有任何方式來做matcher.group()並且不考慮終止字符。 –

+0

我最後修改了你的答案,就像 /foo(?=/| $) http://fiddle.re/zxhxzn – VDev

0

這就是我的回答,。* ==>任意字符,[/ \ s]的 ==>終/或無

.*(\/foo)[\/,\s]