- 主题:regex是不是没有AND?
and是隐含的,比如ab其实就是a and b
【 在 wuduan 的大作中提到: 】
: 我对regex一点都不懂
: 只是在别的地方,匹配字符串的时候说可以用regex语法,
: 我找了半天也没找到AND
: 用途是,如
--
FROM 60.16.239.*
你对AND的定义有问题: 在正则表达式中,a后面接着b这件事就叫AND,而你所希望的(ab|ba)这件事不叫AND。。。
【 在 wuduan 的大作中提到: 】
: 啊?
: 没理解
: ab不是a后面接着b吗?
: ...................
--
FROM 60.16.239.*
正则表达式处理的是有序符号的匹配问题,换句话说,正则表达式处理的对象是一个接一个地出现的符号,在这个形式系统中,AND的定义就是“连接”, 而你所需要的AND,是另外一种形式系统中的东西,在这个形式系统讨论的对象是无时间次序的逻辑断言。
【 在 wuduan 的大作中提到: 】
: 不是我的定义有问题,
: 而是我的AND是和OR定义方法相同的,是逻辑上的AND
: 你那个是字符串的连接AND
: ...................
--
修改:siegfried415 FROM 60.16.239.*
FROM 60.16.239.*
可能这位完全没学过代数系统一类的东西,所以他对不同形式系统中的操作符号的语义可以是不同的这件事感到完全不可理解。。。
【 在 a0123456789q 的大作中提到: 】
: regex没有or.
: 所以,它不是一个 域
--
修改:siegfried415 FROM 60.16.239.*
FROM 60.16.239.*
这种不是标准正则表达式了,而是属于python的扩展了。。。
【 在 moudy 的大作中提到: 】
: > import re
: > print(bool(re.search(r"(?=.*cd)(?=.*ef)(?=.*ab)", "abcdef")))
: True
--
FROM 60.16.239.*
我觉得更合理的标准应该是,pattern中那些能够影响到生成的有限状态自动机的拓扑结构的,就是标准正则,而其他通过引入的变量和函数来实现的就是正则扩展,因为这些变量其实就是起到高型文法(比如上下文相关文法)检测所需要的栈的功能,它们从本质上来说显然是超越正则描述能力的。。。
【 在 moudy 的大作中提到: 】
: 对我来说perl支持的就是标准
: 好比bash支持的script也算标准了。哪怕sh不支持也无所谓
: :
--
FROM 60.16.239.*
指导意义就是,lz需要知道他的RE引擎是基于哪种语言开发的,是标准的、还是扩展的,如果是标准的,就不能用这些扩展语法,这不就是实际意义吗?
【 在 moudy 的大作中提到: 】
: 我觉得你这个定义没有任何实际指导意义
: lookaround也可以转成状态机啊,没任何问题,折腾点而已
: :
--
FROM 60.16.239.*
哥们,你太搞笑了。。。
【 在 tsa350 的大作中提到: 】
: 用 (a.*b|b.*a) 能得出 a AND b的结果, 但这是有回溯的,匹配不到 a.*b还要再回头找一遍 b.*a
--
FROM 60.16.239.*
NFA都可以转换成等价的DFA ,为啥要回溯?
【 在 tsa350 的大作中提到: 】
: 搞笑在哪儿,你来个不搞笑的
--
FROM 60.16.239.*
反正我自己实现过,在二十年前,开源的NFA转DFA的就一堆实现。。。
【 在 tsa350 的大作中提到: 】
: GNU Emacs 、 Java 、 绝大部分 unix grep 、 less 、 more 、 .NET 、 PCR
--
FROM 60.16.239.*