Nmbh 发表于 2020-6-26 10:33:51

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

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

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


.*[.]([^b]..|.[^a].|..[^t])$#排除后缀名为bat的文件
.*[.](?!bat$|exe$).*$#排除后缀名为bat和后缀名为exe的文件

_2_ 发表于 2020-6-26 11:23:11

A | B 不是匹配 A 或 B 吗

_2_ 发表于 2020-6-26 11:27:03

哦我知道了
在匹配的时候 ,表达式是^(A|B)的话,如果 A|B 的结果是 A,就会取反,选择除 A 之外的字符
反之亦然
页: [1]
查看完整版本: 正则表达式取反时,‘|’代表“并”的意思吗?