【发布时间】:2012-02-25 02:44:27
【问题描述】:
我必须分离
D= d1| d2|...|dn
和
F=f1|f2|...|fn
目前,我使用如下所示的 if 语句检查这两个正则表达式:
if (($text_to_search =~ $D) && ($text_to_search !~ $F))
我怎样才能否定 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 应该是“当在输入序列中看到这个时不匹配”
【问题讨论】:
-
您能否向我们展示一些示例输入和期望的行为?
-
不清楚你想要什么。您是否希望具有与该 if 语句相同的功能,但只有一个条件/表达式?
-
FWIW,这个问题我很清楚,我只是不想回答。
-
我想生成一个正则表达式,目前有两个通过说 NOT regexp F。要么在一个表达式中说以下分离不是“允许”,要么不允许每个模式(如“不是 1,不是 2,不是 3")