我试图选择没有 4 位数字的逗号或之前的“id”一词,我尝试了这个:
( ? < ! [ \ d { 5 } | id ] ) ,
问题
例如,如果输入字符串是“1999”,则没有选择逗号,我不明白为什么。
我试图选择没有 4 位数字的逗号或之前的“id”一词,我尝试了这个:
( ? < ! [ \ d { 5 } | id ] ) ,
问题
例如,如果输入字符串是“1999”,则没有选择逗号,我不明白为什么。
试试这个模式:
(?<!\d{5}|id),
您的模式(?<![\d{5}|id]),正在寻找不在数字之后的逗号,{, }, |, i, 或d- 他们不应该在租船者类中:[]. 如果有的话,(?<![\d]{5}|id),也可以工作,但是是多余的。
首先,除非您使用/x标志,否则每个空格都会尝试匹配一个空格。所以把那些拿出来。
其次,您[...]可能正在使用对交替 ( |) 进行分组,但方括号实际上表示一个字符类,即 [\d{5}|id]等同于[id5{}|]并匹配这些字符中的任何一个,但仅此而已。你的意思是这样的:
(?<!\d{5}|id),
最后一个问题可能是正则表达式的许多实现(您没有指定您正在使用的)不支持可变宽度的lookbehind断言。因此,您可能需要执行以下操作:
(?<!\d{5}|...id),