0

我试图选择没有 4 位数字的逗号或之前的“id”一词,我尝试了这个:

   ( ? < ! [ \ d { 5 } | id ] ) ,

问题

例如,如果输入字符串是“1999”,则没有选择逗号,我不明白为什么。

4

2 回答 2

3

试试这个模式:

(?<!\d{5}|id),

您的模式(?<![\d{5}|id]),正在寻找不在数字之后的逗号,{, }, |, i, 或d- 他们不应该在租船者类中:[]. 如果有的话,(?<![\d]{5}|id),也可以工作,但是是多余的。

于 2013-01-11T14:56:04.223 回答
1

首先,除非您使用/x标志,否则每个空格都会尝试匹配一个空格。所以把那些拿出来。

其次,您[...]可能正在使用对交替 ( |) 进行分组,但方括号实际上表示一个字符类, [\d{5}|id]等同于[id5{}|]并匹配这些字符中的任何一个,但仅此而已。你的意思是这样的:

(?<!\d{5}|id),

最后一个问题可能是正则表达式的许多实现(您没有指定您正在使用的)不支持可变宽度的lookbehind断言。因此,您可能需要执行以下操作:

(?<!\d{5}|...id),
于 2013-01-11T14:57:54.893 回答