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