let str1 = 'Foo Bar (baz) Resu'
let str2 = 'Foo Bar 1234 (baz) Resu'
let pattern = /(\D+).\((.*)\).Res.*/
console.log(str1.match(pattern))
console.log(str2.match(pattern))
Я пытаюсь захватить все раньше (...), за исключением цифр, если они есть. Мне также нужно содержание (...). В первом случае он работает так, как должен. У меня есть "Foo Bar" и "baz". Это динамические части строки.
Вы можете использовать
/^(\D+?)[\s\d]*\(([^()]*)\)/
подробности
^
- начало строки(\D+?)
- Группа 1:1 или более символов без цифр, как можно меньше[\s\d]*
- 0+ пробелы или/и цифры\(
- буквальный (
([^()]*)
- Группа 2: 0 или более символов, кроме (
и )
\)
- буквальный )
.
let str1 = 'Foo Bar (baz) Resu'
let str2 = 'Foo Bar 1234 (baz) Resu'
let pattern = /^(\D+?)[\s\d]*\(([^()]*)\)/
let m1 = str1.match(pattern)
if (m1) {
console.log("'"+m1[1]+"';'"+m1[2]+"'")
}
let m2 = str2.match(pattern)
if (m2) {
console.log("'"+m2[1]+"';'"+m2[2]+"'")
}