想要匹配出 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 |