想要匹配出 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 1
^(?=(?!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 |