如何为 AWS 资源制作正则表达式

How to make a Regex for AWS resource

我想要一个匹配以下 AWS 资源的正则表达式:

此外,我希望正则表达式能够匹配以下格式的资源列表:

resourceId, resourceId, ....

列表不是强制性的,ID 之间的空格也不是强制性的。

这是我试过的方法:

(((i|sir|ami|snap|vol|ssi)-[a-zA-Z0-9]+)|((?:[0-9]{1,3}\.){3}[0-9]{1,3}))+ *,* *

您可以使用

^(?:(?:i|sir|ami|snap|vol|ssi|Ipv4)(?:-[a-zA-Z0-9]+)?\b|(?:[0-9]{1,3}\.){3}[0-9]{1,3})(?:\s*,\s*(?:(?:i|sir|ami|snap|vol|ssi|Ipv4)(?:-[a-zA-Z0-9]+)?\b|(?:[0-9]{1,3}\.){3}[0-9]{1,3}))*$

模式匹配

  • ^ 字符串开头
  • (?:非捕获组
    • (?:i|sir|ami|snap|vol|ssi|Ipv4) 匹配 1 个选项
    • (?:-[a-zA-Z0-9]+)?\b 可选择匹配 - 和 1+ 次列出的任何
    • |
    • (?:[0-9]{1,3}\.){3}[0-9]{1,3} 匹配 4 次由 .
    • 分隔的 1-3 位数字
  • )关闭非捕获组
  • (?:非捕获组
    • \s*,\s* 匹配可选空白字符之间的逗号
    • (?:(?:i|sir|ami|snap|vol|ssi|Ipv4)(?:-[a-zA-Z0-9]+)?\b|(?:[0-9]{1,3}\.){3}[0-9]{1,3})与第一部分相同的模式
  • )* 关闭非捕获组并可选择重复
  • $ 字符串结束

Regex demo