无法在末尾之前将输入字符串与“)”匹配

Unable to match input string with ')' before the end

本文关键字:字符串 匹配 输入      更新时间:2023-09-26

我在编写正则表达式以匹配如下字符串时遇到问题:

var p1=@VAL([Test1Q1].[Bandwidth])
var p2=@VAL([Test1Q1].[Usages (KB)])

模式应匹配以@VAL(开头并以第一个括号)结尾的输入,并捕获以下内容(来自上述输入):

[Test1Q1].[Bandwidth]
[Test1Q1].[Usages (KB)]

我尝试使用以下表达式:

var fieldPattern = /@VAL'((.*)')/;
var P1_Pattern = p1.match(fieldPattern );
var P2_Pattern = p2.match(fieldPattern );

我得到了p1的正确匹配,但p2的结果是错误的。 p2我得到了

[Test1Q1].[Usages (KB 

但需要以下结果:

[Test1Q1].[Usages (KB)]

我知道它之所以发生,是因为)发生在p2结束之前;但我无法理清它。 如何修改正则表达式以匹配p1p2并捕获我想要的值?

正如@Xero所评论的那样,该模式与提供的两个输入字符串匹配。

可以在以下代码片段中确认这一点,并了解如何获取捕获组的值:

var p1='@VAL([Test1Q1].[Bandwidth])';
var p2='@VAL([Test1Q1].[Usages (KB)])';
var fieldPattern = /@VAL'((.*)')/;
var P1_Pattern = p1.match(fieldPattern)[1];
var P2_Pattern = p2.match(fieldPattern)[1];
// FORNOW: Use alerts and console logging to show the capture groups' values.
console.log("P1_Pattern === '" + P1_Pattern + "'");
alert("P1_Pattern === '" + P1_Pattern + "'");
console.log("P2_Pattern === '" + P2_Pattern + "'");
alert("P2_Pattern === '" + P2_Pattern + "'");

代码段应输出以下内容:

P1_Pattern === '[Test1Q1].[Bandwidth]'
P2_Pattern === '[Test1Q1].[Usages (KB)]'