- 主题:regex是不是没有AND?
用 (a.*b|b.*a) 能得出 a AND b的结果, 但这是有回溯的,匹配不到 a.*b还要再回头找一遍 b.*a
真正的【逻辑与】匹配是无回溯的,regex从头到尾扫一遍就知道是不是满足 a AND b,这就是他的诉求。
大多数 regex 实现是能做到的
【 在 moudy 的大作中提到: 】
: 你理解错了,AND在regex属于不用说默认就是
: OR才需要专门写出来
--
FROM 111.201.135.*
你这个匹配四个词间的and试试。复杂度n2增长啊
【 在 tsa350 的大作中提到: 】
: 用 (a.*b|b.*a) 能得出 a AND b的结果, 但这是有回溯的,匹配不到 a.*b还要再回头找一遍 b.*a
: 真正的【逻辑与】匹配是无回溯的,regex从头到尾扫一遍就知道是不是满足 a AND b,这就是他的诉求。
: 大多数 regex 实现是能做到的
: ...................
--
FROM 178.26.114.*
哥们,你太搞笑了。。。
【 在 tsa350 的大作中提到: 】
: 用 (a.*b|b.*a) 能得出 a AND b的结果, 但这是有回溯的,匹配不到 a.*b还要再回头找一遍 b.*a
--
FROM 60.16.239.*
(?=.*word1)(?=.*word2)(?=.*word3)(?=.*word4)
这个正则在匹配的过程中只扫描一遍目标字符串,正是楼主的诉求
这叫“前向肯定零宽断言”
【 在 moudy 的大作中提到: 】
: 你这个匹配四个词间的and试试。复杂度n2增长啊
--
FROM 111.201.135.*
搞笑在哪儿,你来个不搞笑的
【 在 siegfried415 的大作中提到: 】
: 哥们,你太搞笑了。。。
--
FROM 111.201.135.*
NFA都可以转换成等价的DFA ,为啥要回溯?
【 在 tsa350 的大作中提到: 】
: 搞笑在哪儿,你来个不搞笑的
--
FROM 60.16.239.*
GNU Emacs 、 Java 、 绝大部分 unix grep 、 less 、 more 、 .NET 、 PCRE 库、Perl 、PHP、 Python、Ruby、 sed 、 vi 这些都是传统 NFA 引擎的 regex
mawk 、 GNU emacs 是 POSIX NFA 引擎
GNU awk 、 GNU grep/egrep、 Tcl 这些是混合的,既有 NFA 也有 DFA
你说的 NFA 转成等价 DFA 的 regex 引擎在哪儿?
【 在 siegfried415 的大作中提到: 】
: NFA都可以转换成等价的DFA ,为啥要回溯?
--
FROM 111.201.135.*
反正我自己实现过,在二十年前,开源的NFA转DFA的就一堆实现。。。
【 在 tsa350 的大作中提到: 】
: GNU Emacs 、 Java 、 绝大部分 unix grep 、 less 、 more 、 .NET 、 PCR
--
FROM 60.16.239.*
我在18楼就写的这个。
【 在 tsa350 的大作中提到: 】
: (?=.*word1)(?=.*word2)(?=.*word3)(?=.*word4)
: 这个正则在匹配的过程中只扫描一遍目标字符串,正是楼主的诉求
: 这叫“前向肯定零宽断言”
: ...................
--
FROM 178.26.114.*
你举的例子明显是 or啊。
【 在 tsa350 的大作中提到: 】
: 搞笑在哪儿,你来个不搞笑的
:
--
FROM 183.95.135.*