我有两个不相交的集合
D= d1| d2|...|dn
并且。
F=f1|f2|...|fn
目前我使用以下if语句来检查这两个正则表达式:
if (($text_to_search =~ $D) && ($text_to_search !~ $F))
如何否定F?是否可以使用负向先行断言来否定整个析取式或每个析取式?
应该像这样:
regexp = (d1)| (d2) | (d3) ... (dn) | NOT (f1) | NOT (f2) | ... | Not (fn)
括号是必要的,用于否定模式,而不仅仅是第一个单字符,对吗?
编辑: 例如,D 是:
a|b|c|d
,F 是:1|2|3
现在行为应该像这样:input: "abc" --> accepted
input: "a" --> accepted
input: "abc1" --> Not accepted
input: "2" --> NOT accepted
input: "a2bc1" --> Not accepted
(input: "xyz999" --> does not match - shouldn't be accepted)
F-disjunct应该被理解为“当在输入序列中看到此时,不匹配”。