正则表达和负面展望未来

时间:2017-11-17 11:33:24

标签: regex regex-negation regex-lookarounds

我正在尝试创建一些与网站域匹配的正则表达式模式。

规则如下:

For France, the URL pattern must have /fr-fr (followed by anything else) after the domain name, ie www.domain.com/fr-fr/anything
For Germany, the URL pattern must have /de-de (followed by anything else) after the domain name, ie www.domain.com/de-de/anything
And for all other countries, the URL pattern can be the root domain (ie www.domain.com) OR anything EXCEPT fr-fr and de-de after the domain name 

我有法国和德国的这些正则表达式模式可以正常工作:

https?://www.domain.com.*?/(?i)FR-FR.\*

https?://www.domain.com.*?/(?i)DE-DE.\*

但是,我很难获得与根域和其他域名相匹配的正则表达式模式(例如www.domain.com/en-us之后的任何内容)但EXCLUDE /fr-fr.* and /de-de.*

我尝试了一个负面的前瞻,比如这个(例如,NOT france):

https?://www.domain.com.*?/(?!fr-fr).\*

但这似乎不起作用,并且匹配不应该的URL。

也许我错过了一些明显的东西。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

仅限“德国”网址:

^(?i)https?://www.domain.com(:\d+)?/de-de(/.*)?$

仅限“法国”网址:

^(?i)https?://www.domain.com(:\d+)?/fr-fr(/.*)?$

既不是“德国”也不是“法国”的网址

^(?i)https?://www.domain.com(:\d+)?(?!/fr-fr|/de-de)(/.*)?$