- 主题:regex是不是没有AND?
[^x] (?!…) 也可以算not了,语义不是很完备
【 在 a0123456789q 的大作中提到: 】
: regex没有 差集 运算,所以就没有补集运算,所以就没有 not,所以有 | 但没有你说的and.
: regex更像一个 拓扑集 而非 域。
:
--
FROM 213.95.148.*
[^x] (?!…) 也可以算not了,语义不是很完备
【 在 a0123456789q 的大作中提到: 】
: regex没有 差集 运算,所以就没有补集运算,所以就没有 not,所以有 | 但没有你说的and.
: regex更像一个 拓扑集 而非 域。
:
--
FROM 213.95.148.*
> import re
> print(bool(re.search(r"(?=.*cd)(?=.*ef)(?=.*ab)", "abcdef")))
True
【 在 wuduan 的大作中提到: 】
: 我对regex一点都不懂
: 只是在别的地方,匹配字符串的时候说可以用regex语法,
: 我找了半天也没找到AND
: ...................
--
FROM 213.95.148.*
对我来说perl支持的就是标准
好比bash支持的script也算标准了。哪怕sh不支持也无所谓
【 在 siegfried415 的大作中提到: 】
: 这种不是标准正则表达式了,而是属于python的扩展了。。。
:
--
FROM 178.26.114.*
你理解错了,AND在regex属于不用说默认就是
OR才需要专门写出来
【 在 wuduan 的大作中提到: 】
: 这只是你的理解,
: 实际上原始定义中根本就没有AND
: 但是却有OR
: ...................
--
FROM 178.26.114.*
我觉得你这个定义没有任何实际指导意义
lookaround也可以转成状态机啊,没任何问题,折腾点而已
【 在 siegfried415 的大作中提到: 】
: 我觉得更合理的标准应该是,pattern中那些能够影响到生成的有限状态自动机的拓扑结构的,就是标准正则,而其他通过引入的变量和函数来实现的就是正则扩展,因为这些变量其实就是起到高型文法(比如上下文相关文法)检测所需要的栈的功能,它们从本质上来说显然是超越正则描述能力的。。。
:
--
FROM 178.26.114.*
你这个匹配四个词间的and试试。复杂度n2增长啊
【 在 tsa350 的大作中提到: 】
: 用 (a.*b|b.*a) 能得出 a AND b的结果, 但这是有回溯的,匹配不到 a.*b还要再回头找一遍 b.*a
: 真正的【逻辑与】匹配是无回溯的,regex从头到尾扫一遍就知道是不是满足 a AND b,这就是他的诉求。
: 大多数 regex 实现是能做到的
: ...................
--
FROM 178.26.114.*
我在18楼就写的这个。
【 在 tsa350 的大作中提到: 】
: (?=.*word1)(?=.*word2)(?=.*word3)(?=.*word4)
: 这个正则在匹配的过程中只扫描一遍目标字符串,正是楼主的诉求
: 这叫“前向肯定零宽断言”
: ...................
--
FROM 178.26.114.*