除了两个单词之外的所有正则表达式

时间:2015-01-09 15:13:58

标签: regex

我有这个正则表达式:

^(.*)$ https://mysite.com$1

它匹配所有内容然后转换为:

anything.mysite.com/foo  --- >   mysite.com/foo

我想做类似的事情,但只有当任何单词与2个特定单词不同时,我才会在子域与string1或string2不同时执行该重写。所以:

string1.mysite.com/query     --->   https://string1.mysite.com/query
foo.mysite.com/query         --->   https://mysite.com/query

2 个答案:

答案 0 :(得分:0)

由于您使用的是Nginx,因此可以在server块中添加以禁止匹配这两个子域:

server_name ~^(?!string1|string2)[^.]+\.mysite\.com$;

(?!string1|string2) 否定前瞻除了string1string2之外的所有内容

答案 1 :(得分:0)

你可以用外观来做这件事 要删除您不想要的部分,只需替换为$1$2

 # ^(.*?(?://))?.*?(?<!\bstring1)(?<!\bstring2)\.(mysite\.com\b.*?)$

 ^ 
 (                             # (1 start)
      .*? 
      (?: // )
 )?                            # (1 end)
 .*? 
 (?<! \b string1 )
 (?<! \b string2 )
 \.
 (                             # (2 start)
      mysite\.com \b 
      .*? 
 )                             # (2 end)
 $