Регулярное выражение для выхода из круглых скобок
Я попробовал разные способы избежать скобок, используя регулярное выражение в JavaScript, но я все еще не могу заставить его работать.
Это строка:
"abc(blah (blah) blah()...).def(blah() (blah).. () ...)"
Я хочу, чтобы это было обнаружено:
abc().def()
Используя этот код, он возвращает false.
str.match(/abc\([^)]*\)\.def\([^)]*\)/i);
Не могли бы вы рассказать мне, почему мое регулярное выражение не работает?
Ответы
Ответ 1
Это регулярное выражение будет соответствовать строке, которую вы указали:
(abc\().+(\)\.def\().+(\))
И используя обратные ссылки $1$2$3
создаст abc().def()
Или просто используйте это, если вам не нужны обратные ссылки:
abc\(.+\)\.def\(.+\)
Ответ 2
K... Здесь Идея...
abc(blah (blah) blah()).def(blah() (blah).blah())
Используйте regExp, как этот
var regExp1 = \^([a-z])*\(\ig;
он будет соответствовать
abc(
затем используйте
var regExp2 = /\)\./
он будет соответствовать
")."
в строке.
затем разделите фактическую строку так, чтобы она стала
def(blah() (blah).blah())
повторить, пока регулярное выражение не сможет найти
regExp2
и добавьте закрывающий кронштейн.
Самое простое решение, о котором я мог подумать.
Надеюсь, что это поможет.