我對Regex很新穎。正則表達式匹配一個模式並排除字符串列表
基本上我試圖創建一個正則表達式來評估我們系統的URL路徑。然而,在我們的系統中的已知錯誤,這導致URL路徑成爲真的很亂..
理想情況下,URL應該是
/mobile/retail.*
由於錯誤的URL都會有「別的東西」在「/移動」和「/零售」這樣的事情
/mobile(/.*)?/retail
但具有挑戰性的一點是,當有一些的話,我想忽略在「別的東西」,即銷售,搜索之間,很多,登錄。所以情況應該是這樣的
所以我有一個測試用例是這樣的:
- /移動/零售 - >比賽
- /移動/零售/東西 - >比賽
- /移動/事/零售/東西 - >比賽
- /移動/事/零售/事/銷售 - >比賽
- /移動/事/某事/零售/事/銷售 - >比賽
- /美孚/銷售/什麼 - >不匹配
- /移動/事/銷售/什麼 - >不匹配
- /移動/事/銷售/事/零售 - >不匹配
- /移動/很多/測試/零售 - >不匹配
- /移動/測試/批號/測試/零售 - >不匹配
- /移動/路/ TEST2/TEST3/testx /批號/測試/零售 - >不匹配
我有點卡在這個正則表達式,它不工作如何我想它..
/mobile(/(?!sale|search|lot|login).*)?/retail.*
上述正則表達式不會在條件這樣的工作:
- /移動/事/銷售/事/零售
- /移動/測試/批號/測試/零售
- /mobile/path/test2/test3/testx/lot/test/retail
要排除的詞是嚴格的。例如,下面的名單應該通過:
- /移動/劇情/零售
- /移動/手/零售
- /移動/大量銷售/零售
- /移動/銷售-Item /零售/事/測試/銷售
- /移動/搜索PRG項測試/測試/零售
任何人都具有較強的正則表達式的知識和任何反饋是非常讚賞。
我認爲這比我的好,因爲它會讓'/ mobile/plot/retail'這樣的路徑通過(我的拒絕路徑)。當然,你也會拒絕'/ mobile/lots/retail'。 @威爾遜沒有詳細說明這些「壞詞」需要被嚴格解讀的程度。 –
喜蒂姆,它只是/特定///銷售/所以,例如,我期待/移動/陰謀/零售和/移動/地段/零售通過。另一個例子,如果它/移動/ saleitem /零售也應該通過。如果這是有道理 – Wilson
我發現這個正則表達式:/mobile(?!(.*)(/sale/|/search/|/lot/|/login/).*/retail).*/retail.*,看起來像這是工作! :) – Wilson