鱼C论坛

 找回密码
 立即注册
查看: 1509|回复: 2

[已解决]正则表达式取反时,‘|’代表“并”的意思吗?

[复制链接]
发表于 2020-6-26 10:33:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nmbh 于 2020-6-26 10:33 编辑

已知正则表达式中[^pattern]和(?!pattern)有类似的效果,即不匹配特定位置有‘pattern’的文本。
在“Python3 如何优雅地使用正则表达式(详解五)”中提供了相关例子,但与我的理解有点不同。
例如‘.*[.](?!bat$|exe$).*$’按照我的理解是‘不匹配后缀名为bat的文件’‘不匹配后缀名为exe的文件’,但这样不就变成匹配全集了吗?
因为‘exe文件’符合‘不匹配后缀名为bat的文件’这一规则,而‘bat文件’符合‘不匹配后缀名为exe的文件’。求大神解答

.*[.]([^b]..|.[^a].|..[^t])$  #排除后缀名为bat的文件
.*[.](?!bat$|exe$).*$  #排除后缀名为bat和后缀名为exe的文件
最佳答案
2020-6-26 11:27:03
哦我知道了
在匹配的时候 ,表达式是^(A|B)的话,如果 A|B 的结果是 A,就会取反,选择除 A 之外的字符
反之亦然
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-26 11:23:11 From FishC Mobile | 显示全部楼层
A | B 不是匹配 A 或 B 吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 11:27:03 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
哦我知道了
在匹配的时候 ,表达式是^(A|B)的话,如果 A|B 的结果是 A,就会取反,选择除 A 之外的字符
反之亦然
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表