想要匹配出 A ,同时不匹配出 B , B 是 A 的子集
     1 
                    
                    iEverX      2016-03-16 09:51:30 +08:00 
                    
                    不明白,可以给个例子出来看看 
                 | 
            
     2 
                    
                    Naples   OP @iEverX 简单的例子:我想通过.*google.*匹配出所有包含 google 的字符串,同时不能匹配出 dl.google.com ,语法上如何做到 
                 | 
            
     3 
                    
                    czheo      2016-03-16 09:53:51 +08:00 
                    
                    
                 | 
            
     4 
                    
                    ming2281      2016-03-16 09:57:00 +08:00 
                    
                    [A^B] 
                 | 
            
     7 
                    
                    czheo      2016-03-16 10:10:59 +08:00 
                    
                    (?=^((?!dl\.google\.com).)*$)(?=^.*google.*$) 
                 | 
            
     8 
                    
                    Naples   OP @ming2281 匹配 DNS 请求,除了个别特定的网址(例如 dl.google.com )其他所有包含 google 字眼的网址 
                 | 
            
     9 
                    
                    czheo      2016-03-16 10:15:58 +08:00    ^(?=(?!dl\.google\.com)).*google.*$ 
                 | 
            
     11 
                    
                    Naples   OP  | 
            
     12 
                    
                    imn1      2016-03-16 10:21:38 +08:00 
                    
                    这问题有歧义,除非 A 含有通配符,否则直接把 A 写完整就行了 
                 | 
            
     14 
                    
                    ming2281      2016-03-16 10:27:31 +08:00 
                    
                    (?=[^dl]+ 
                \.google\.com )  | 
            
     15 
                    
                    ming2281      2016-03-16 10:29:22 +08:00 
                    
                    (?=[^dl]+).+\.google\.com 
                 | 
            
     16 
                    
                    Kisesy      2016-03-16 10:30:40 +08:00 
                    
                    非要写在一条正则上?这样根本不好维护,加黑名单最简单 
                 | 
            
     17 
                    
                    ming2281      2016-03-16 10:34:47 +08:00 
                    
                    完善下 
                ^(?=(?!dl\.google\.com)).+?\.google\.(com|cn|jp|hk)$  | 
            
     18 
                    
                    ming2281      2016-03-16 10:36:45 +08:00 
                    
                    我才发现正则没有 AND 功能(C#好象有此功能,私有拓展) 
                用环视做出来,好蹩脚  | 
            
     21 
                    
                    Naples   OP  | 
            
     22 
                    
                    Ge4Los      2016-03-16 11:29:43 +08:00 
                    
                    这个如何,用  ?<! 来实现 
                .*(?<!dl)\.google\..*  | 
            
     23 
                    
                    Naples   OP @Ge4Los 更简洁,只是 google.com 匹配不了 
                 | 
            
     25 
                    
                    Naples   OP  |