我有这样的字符串('[Test.A[0]]' <>'' OR '[Test.B[0]]' <>'' OR '[Test.C[0]]' <>'' OR '[Test.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] 删除。
我来说两句