我正在尝试选择没有4位数字或逗号“id”的逗号,我试过这个:
( ? < ! [ \ d { 5 } | id ] ) ,
问题
例如,如果输入字符串为“1999”,则未选择逗号,我不明白为什么。
答案 0 :(得分:3)
尝试这种模式:
(?<!\d{5}|id),
您的模式(?<![\d{5}|id]),
正在寻找一个不在数字之后的逗号,{
,}
,|
,i
或{{ 1}} - 他们不应该在租船人类中:d
。如果有的话,[]
也会起作用,但这是多余的。
答案 1 :(得分:1)
首先,除非您使用/x
标志,否则每个空格都会尝试匹配空格。所以把它们拿走。
其次,您使用[...]
可能会对替换(|
)进行分组,但方括号实际上表示字符类,即 [\d{5}|id]
相当于[id5{}|]
并匹配这些字符中的任何一个,但不是更多。你的意思是:
(?<!\d{5}|id),
最后一个问题可能是许多正则表达式的实现(你还没有指定你正在使用的)不支持可变宽度的lookbehind断言。所以,你可能需要做类似的事情:
(?<!\d{5}|...id),