I have two variants of string:
Key ("vinCode")=(V1234567890123456) some text.
Key (vinCode)=(V1234567890123456) some text.
I'm trying to get values from brackets (vinCode, V1234567890123456). Currently I have such regular expression:
(?<=\().*?(?=\))
But it gets values with "", e.g ("vinCode", vinCode, V1234567890123456).
Is it possible to create expression which can get values always without ""?
You could add an optional match of " in the look-behind part, and then require that the next character is not an ". The closing quote can be matched with a back-reference to the captured first quote:
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));
}
Note: this regex will not match an empty string in quotes: ("")