负正向查找,排除特定的字符串集,并允许所有其他字符串



我正在搜索大量包含各种负错误代码的文本日志文件,主要是4位数前面有减号,例如-3304,-3315等。我希望排除这些错误代码中的一小部分,同时允许所有其他错误代码匹配。

我试着用这个答案的改编:

"^/(?!-3301|-3304|-3306|-3308|-3309)(-[0-9]{4})"

排除-3301, -3304, -3306, -3308, -3309,但匹配所有其他4位负字符串。我知道有匹配的,比如文件集中的-3220,但是它们不匹配。

我在试图消极看待未来的过程中错过了什么?

在数字匹配模式之前有一些/字符,不应该是负数的一部分。此外,您只在字符串的开头与^匹配。

请注意,如果使用该模式匹配超过4位数的数字,则需要在右侧设置数字边界。

可以使用

-(?!330[14689])d{4}(?!d)

细节:

  • -- a连字符
  • (?!330[14689])-在右边,应该没有330,然后是14689设置的一个数字
  • d{4}-四位数字
  • (?!d)-右边不允许出现数字

最新更新