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