正则表达式匹配“<seven digits =”“> - <filename>”只有一组七位数

时间:2017-12-15 13:18:21

标签: regex powershell

我一直在尝试编写一个正则表达式,该正则表达式将附加一个带有七位数字标识符后跟连字符的文件名,例如1234567 - filename.pdf

文件名可以是文件名有效字符的任何集合。

到目前为止,我有正则表达式^[0-9]{7} - .*,它与字符串匹配,但它也与7654321 - 1234567 - filename.pdf3214567 - 7654321 - 1234567 - filename.pdf匹配,依此类推。

是否有正则表达式只匹配带有一组数字和连字符的字符串?像^[0-9]{7} -{1} .*

这样的东西

1 个答案:

答案 0 :(得分:3)

您可以添加否定前瞻:

^[0-9]{7} - (?![0-9]{7} - ).* 
            ^^^^^^^^^^^^^^^

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • [0-9]{7} - 7位
  • - - 空格,-,空间
  • (?![0-9]{7} - ) - 如果有7个数字,空格,-以及紧靠当前位置右侧的空格,则会导致匹配失败的否定前瞻
  • .* - 任意0个字符,尽可能多