从正则表达式中删除不需要的匹配项
Removing unwanted matches from regex expression
我有一个字符串列表,例如:
- 缺少图像 09
- 缺少图像 08; P012V004-0061-01 再次裁剪
- 再次裁剪 P012CR0409F1-1-04、P012CR0409F1-1-05
- P012CR0602F1-2-01 再次裁剪
现在我用于隔离需要裁剪的图像代码的正则表达式看起来像
([\w\d-]+)(?=.+crop again)
,但在混合情况下 returns“Missing”、“image”和“08”有效。我怎样才能从结果中排除它?我再次猜测 lookahead/behind 但无法正常工作。奖励是 return 另一组中丢失的图像,因为我也需要它们。
非常感谢,
您可以使用
[\w-]+(?=(?:\s*,\s*[\w-]+)*\s+crop again)
这里,
[\w-]+
- 匹配 1 个或多个字母、数字、下划线或连字符
(?=(?:\s*,\s*[\w-]+)*\s+crop again)
- 随后是
(?:\s*,\s*[\w-]+)*
- 0 次或多次重复用空格括起来的逗号,然后是 1+ 个单词/-
个字符
\s+
- 1+ 个空格然后
crop again
- 文字子串。
假设图片代码总是遵循
这样的格式
- P012V004-0061-01
- P012CR0409F1-1-04
- P012CR0409F1-1-05
- P012CR0602F1-2-01
即可变长度的字母数字组合,然后是连字符,然后是数字,然后是连字符,然后是数字。
你可以这样做:
[a-zA-Z0-9]+-[0-9]+-[0-9]+
我有一个字符串列表,例如:
- 缺少图像 09
- 缺少图像 08; P012V004-0061-01 再次裁剪
- 再次裁剪 P012CR0409F1-1-04、P012CR0409F1-1-05
- P012CR0602F1-2-01 再次裁剪
现在我用于隔离需要裁剪的图像代码的正则表达式看起来像
([\w\d-]+)(?=.+crop again)
,但在混合情况下 returns“Missing”、“image”和“08”有效。我怎样才能从结果中排除它?我再次猜测 lookahead/behind 但无法正常工作。奖励是 return 另一组中丢失的图像,因为我也需要它们。
非常感谢,
您可以使用
[\w-]+(?=(?:\s*,\s*[\w-]+)*\s+crop again)
这里,
[\w-]+
- 匹配 1 个或多个字母、数字、下划线或连字符(?=(?:\s*,\s*[\w-]+)*\s+crop again)
- 随后是(?:\s*,\s*[\w-]+)*
- 0 次或多次重复用空格括起来的逗号,然后是 1+ 个单词/-
个字符\s+
- 1+ 个空格然后crop again
- 文字子串。
假设图片代码总是遵循
这样的格式- P012V004-0061-01
- P012CR0409F1-1-04
- P012CR0409F1-1-05
- P012CR0602F1-2-01
即可变长度的字母数字组合,然后是连字符,然后是数字,然后是连字符,然后是数字。
你可以这样做:
[a-zA-Z0-9]+-[0-9]+-[0-9]+