我有两个字符串的变体:
Key ("vinCode")=(V1234567890123456) some text.
Key (vinCode)=(V1234567890123456) some text.
我试图从括号中获取值(vinCode, V1234567890123456)。目前我有这样的正则表达式:
(?<=().*?(?=))
但它获得""
的值,例如("vinCode" vinCode, V1234567890123456)。
是否有可能创建一个表达式,它可以得到的值总是没有""
?
您可以在后面的部分添加"
的可选匹配,然后要求下一个字符不是"
。结束引号可以与捕获的第一个引号的反向引用匹配:
let regex = /(?<=((")?)(?!").*?(?=1))/g;
let tests = [
'Key ("vinCode")=(V1234567890123456) some text.',
'Key (vinCode)=(V1234567890123456) some text.'
];
for (let test of tests) {
console.log(test.match(regex));
}
注意:这个正则表达式将不匹配引号中的空字符串:("")