2013-07-03 63 views
-1

這是我到目前爲止有:正則表達式樂趣

^/fe/(?:[0-9A-Za-z]{2,30}?/?+)([$|#|\?]+?) 

/fe/$1

我需要支持:

  • 重寫 「/ FE/ABC123 /#嗒嗒」 到「/fe /?ggg#blah「
  • 」/ fe/abc123#blah「重寫」/ fe/abc123/blah「
  • 」/ fe/abc123 /?ggg#blah「以 「/ FE /#嗒嗒」
  • 重寫 「/ FE/ABC123?GGG#嗒嗒」 到 「/ FE /?GGG#嗒嗒」
  • 重寫 「/ FE/ABC123」 到 「/ FE /」
  • 將「/ fe/abc123 /」改寫爲「/ fe /」

當前前4個被正確捕獲。 我仍然有問題的最後兩個。

你可以用這個在這裏玩: http://gskinner.com/RegExr/?35ess

任何幫助將不勝感激:)

+1

所以什麼困難,如何接近爲y我們目前的正則表達式不符合? –

+0

'([$ |#| \?] +?)'應該是'([$ |#| \?] +)?'。 '+'後面的'?'使得它非貪婪。你似乎想要的是在可選之前進行比賽。 – acdcjunior

回答

3

爲什麼不直接匹配一個路徑元素(除斜線,哈希和問號的任何東西),然後一個可選的斜線:

Find what: ^/fe/[^/#?]+/? 
Replace with: /fe/ 

Working demo

+0

簡單,做我需要的 - 非常感謝! – itkoren