2013-12-23 29 views
0

我在編寫以下所有包含正則表達式時遇到問題。正則表達式先行與可選片段的網址

我有一個URL格式

www.someurl.com/dir1/dir2/dir3/page?bunchofrandomvariables

我也有這個網址的稍作修改的版本會

www.someurl.com/dir1/newdirectory/dir2/dir3/page?bunchofrandomvariables

其中newdirectory可以是字母數字並可以包含破折號。

我想要一個可以匹配原始URL(沒有「newdirectory」)和任何「newdirectory」的規則表達式。

我第一次嘗試是一個類似於

^www.someurl.com/dir1/[a-zA-Z]+/dir2/dir3/page?.* 

不幸的是,打破了第一個例子,因爲[A-ZA-Z] +捕獲 「DIR2」。無論如何,用lookaheads來寫這兩個例子都是一回事嗎?

回答

1

我只是修改你的正則表達式:

  • 轉義(取決於你使用的語言也許它不是必需的)使用?

    ^www.someurl.com\/dir1(\/[a-zA-Z]+)?\/dir2\/dir3\/page?.* 
    
  • 作出/newdirectory部分可選的slaches

Working DEMO

+0

是的,它是那麼簡單。我曾經在思考過程中嘗試過類似的東西,但是我沒有想過將dir1後的「/」放在()中。 感謝百萬幫忙 – Ender28