我是一名新手,对于正则表达式并不熟悉。
基本上我正在尝试创建一个正则表达式来评估我们系统中的URL路径。然而,我们的系统存在已知的错误,导致URL路径变得非常混乱。
理想情况下,URL应该是:
/mobile/retail.*
由于这个 bug,URL 在“/mobile”和“/retail”之间会有“something else”,例如:
/mobile(/.*)?/retail
但是挑战在于当“something else”中包含一些我想忽略的单词时,比如 sale、search、lot、login。此时情况应该是这样的:因此,我有一个测试用例,类似于以下内容:
/mobile/retail -> 匹配
/mobile/retail/something -> 匹配
/mobile/something/retail/something -> 匹配
/mobile/something/retail/something/sale -> 匹配
/mobile/something/something/retail/something/sale -> 匹配
/mobil/sale/something -> 不匹配
/mobile/something/sale/something -> 不匹配
/mobile/something/sale/something/retail -> 不匹配
/mobile/lot/test/retail -> 不匹配
/mobile/test/lot/test/retail -> 不匹配
/mobile/path/test2/test3/testx/lot/test/retail -> 不匹配
我在这个正则表达式上遇到了困难,它不能按照我的要求工作。
/mobile(/(?!sale|search|lot|login).*)?/retail.*
上述正则表达式在以下情况下无法工作:
- /mobile/something/sale/something/retail
- /mobile/test/lot/test/retail
- /mobile/path/test2/test3/testx/lot/test/retail
- /mobile/plot/retail
- /mobile/lots/retail
- /mobile/lots-of-sale/retail
- /mobile/sale-item/retail/something/test/sale
- /mobile/search-prg-item-test/test/retail
/mobile/plot/retail
这样的路径通过(而我的会拒绝)。当然,你的也会拒绝/mobile/lots/retail
。@Wilson没有完全说明那些“坏词”需要被严格解释。 - Tim Pietzcker