我试图选择没有 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),