Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从正则表达式中删除不需要的匹配项_Regex_Regex Lookarounds - Fatal编程技术网

Regex 从正则表达式中删除不需要的匹配项

Regex 从正则表达式中删除不需要的匹配项,regex,regex-lookarounds,Regex,Regex Lookarounds,我有一个字符串列表,如: 缺少图像09 缺失图像08;P012V004-0061-01再次裁剪 P012CR0409F1-1-04、P012CR0409F1-1-05再次收割 P012CR0602F1-2-01再次裁剪 现在,我用于隔离需要裁剪的图像代码的正则表达式如下所示 ([\w\d-]+)(?=.+再次裁剪),它可以工作,但在混合情况下返回“Missing”、“image”和“08”。我怎样才能从结果中排除这一点?我又在猜“向前看/向后看”了,但没法使它起作用。一个额外的好处是返回另一

我有一个字符串列表,如:

  • 缺少图像09
  • 缺失图像08;P012V004-0061-01再次裁剪
  • P012CR0409F1-1-04、P012CR0409F1-1-05再次收割
  • P012CR0602F1-2-01再次裁剪
现在,我用于隔离需要裁剪的图像代码的正则表达式如下所示
([\w\d-]+)(?=.+再次裁剪)
,它可以工作,但在混合情况下返回“Missing”、“image”和“08”。我怎样才能从结果中排除这一点?我又在猜“向前看/向后看”了,但没法使它起作用。一个额外的好处是返回另一组中丢失的图像,因为我也需要它们

非常感谢,

您可以使用

[\w-]+(?=(?:\s*,\s*[\w-]+)*\s+crop again)

这里,

  • [\w-]+
    -匹配一个或多个字母、数字、下划线或连字符
  • (?=(?:\s*,\s*[\w-]+)*\s+再次裁剪)
    -后跟
    • (?:\s*,\s*[\w-]+)*
      -0次或更多次重复逗号,用空格括起来,然后是1+个单词/
      -
      字符
    • \s+
      -1+空格,然后
    • 再次裁剪
      -文字子字符串

假设图像代码始终遵循以下格式

  • P012V004-0061-01
  • P012CR0409F1-1-04
  • P012CR0409F1-1-05
  • P012CR0602F1-2-01
i、 e.可变长度、连字符、数字、连字符和数字的字母数字组合

你可以做:

[a-zA-Z0-9]+-[0-9]+-[0-9]+

不确定你的“奖金”部分,你是什么意思<代码>(
P012CR0409F1-1-04
应该包括在内吗?@JvdV是,很抱歉没有包括在内clear@WiktorStribiżew是的,但有时我有多个数字。我最终使用了
(?!缺少图像?)(\d{2})
true,但我宁愿采用专门查找“再次裁剪”字符串的解决方案,以便在数据不一致的情况下更可靠。谢谢!