带有嵌套方括号的正则表达式

爱德华

我有这样的字符串('[Test.A[0]]' <>'' OR '[Test.B[0]]' <>'' OR '[Test.C[0]]' <>'' OR '[Test.D[0]]' <> ''),我想使用正则表达式来获取以下项目:

  • 测试.A[0]
  • 测试.B[0]
  • 测试.C[0]
  • 测试.D[0]

我试过了\[.*?\],但它会返回[Test.EVAPCT[0]

维克多·斯特里比尤夫

您可以使用

\w+(?:\.\w+)*\[[^\][]*]
\w+(?:\.\w+)*\[\d+]

请参阅正则表达式演示详情

  • \w+ - 一个或多个字字符
  • (?:\.\w+)*- 零个或多个 a 序列.和一个或多个字字符
  • \[- 一个[字符
  • [^\][]*- 除[]/之外的零个或多个字符\d+- 一个或多个数字
  • ]- 一个]字符。

请参阅下面的演示:

const text = "('[Test.A[0]]' <>'' OR '[Test.B[0]]' <>'' OR '[Test.C[0]]' <>'' OR '[Test.D[0]]' <> '')";
const regex = /\w+(?:\.\w+)*\[[^\][]*]/g;
console.log( text.match(regex) );

为了也满足像[Test.F]你可能使用一个有点不同逻辑的正则表达式这样的情况

/(?<=\[)\w+(?:\.\w+)*(?:\[[^\][]*])?(?=])/g

请参阅此正则表达式演示和下面的演示:

const text = "('[Test.A[0]]' <>'' OR '[Test.B[0]]' <>'' OR '[Test.C[0]]' <>'' OR '[Test.D[0]]' <> '') [Test.F]";
const regex = /(?<=\[)\w+(?:\.\w+)*(?:\[[^\][]*])?(?=])/g;
console.log( text.match(regex) );

详情

  • (?<=\[)- 在[字符之后的位置
  • (\w+(?:\.\w+)*(?:\[[^\][]*])?)- 第 1 组:一个或多个字字符,然后是零个或多个序列.和一个或多个字字符,然后是可选出现的[...]子字符串
  • (?=])- 在]字符之前的位置

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章