2

我一直在尝试解析资源 arn ex.(arn:aws:ec2:us-east-1:0123456789:volume/vol-gg4gggs0svevb3000) 以提取 CloudWatch 日志见解中的 vol-* 并且无法正确获取正则表达式模式与预期的结果。

我尝试使用以下模式但没有结果。

parse @message /.[v,o,l].-([0-9][a-z]){0,17}/
4

1 回答 1

0

在您尝试的模式中,这部分([0-9][a-z]){0,17}重复一个数字 0 到 17 次,紧跟一个字符 az。因此,按照特定顺序,最大字符数为 34。

另请注意,重复捕获组时,组值包含上次迭代的值。在这种情况下,这将是 2 个字符。

这部分.[v,o,l].可以写成.[vol,].并匹配 3 个字符:一个点可以匹配除换行符以外的任何字符,然后是其中的 1,v o l或者,因为它是字符类,又是一个点,可以匹配除换行符之外的任何字符

阅读此页面,您要提取的部分应该在一个命名的捕获组中。

parse @message /(?<volume>vol-[0-9a-z]{17})/

模式匹配

  • (?<volume>命名捕获组volume
    • vol-从字面上匹配
    • [0-9a-z]{17}重复 17 次字符类中列出的任何内容
  • )关闭命名组

正则表达式演示

于 2020-12-18T23:25:58.270 回答