正则求助

2016 年 3 月 16 日
 Naples

想要匹配出 A ,同时不匹配出 B , B 是 A 的子集

3483 次点击
所在节点    正则表达式
26 条回复
iEverX
2016 年 3 月 16 日
不明白,可以给个例子出来看看
Naples
2016 年 3 月 16 日
@iEverX 简单的例子:我想通过.*google.*匹配出所有包含 google 的字符串,同时不能匹配出 dl.google.com ,语法上如何做到
czheo
2016 年 3 月 16 日
ming2281
2016 年 3 月 16 日
[A^B]
Naples
2016 年 3 月 16 日
@ming2281 不行欸
ming2281
2016 年 3 月 16 日
@Naples 能给出应用举例吗
czheo
2016 年 3 月 16 日
(?=^((?!dl\.google\.com).)*$)(?=^.*google.*$)
Naples
2016 年 3 月 16 日
@ming2281 匹配 DNS 请求,除了个别特定的网址(例如 dl.google.com )其他所有包含 google 字眼的网址
czheo
2016 年 3 月 16 日
^(?=(?!dl\.google\.com)).*google.*$
Naples
2016 年 3 月 16 日
@czheo 测试通过!谢谢
Naples
2016 年 3 月 16 日
@czheo 请问在添加一个 google.cn 是不是 ^(?=(?!dl\.google\.com|google\.cn)).*google.*$
imn1
2016 年 3 月 16 日
这问题有歧义,除非 A 含有通配符,否则直接把 A 写完整就行了
Naples
2016 年 3 月 16 日
@imn1 我表达问题, A 是.*google.*
ming2281
2016 年 3 月 16 日
(?=[^dl]+
\.google\.com )
ming2281
2016 年 3 月 16 日
(?=[^dl]+).+\.google\.com
Kisesy
2016 年 3 月 16 日
非要写在一条正则上?这样根本不好维护,加黑名单最简单
ming2281
2016 年 3 月 16 日
完善下
^(?=(?!dl\.google\.com)).+?\.google\.(com|cn|jp|hk)$
ming2281
2016 年 3 月 16 日
我才发现正则没有 AND 功能(C#好象有此功能,私有拓展)
用环视做出来,好蹩脚
Naples
2016 年 3 月 16 日
@czheo 看错了,测试不通过
Naples
2016 年 3 月 16 日
@ming2281
@czheo
路由上都提示 正则错误,?+* follows nothing

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/263832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX