我对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