я придумал регулярное выражение строки, которая анализирует данный текст на 3 категории:Как обрабатывать вложенные круглые скобки с регулярным выражением?
- в скобках
- в скобках
- ни.
Как это:
\[.+?\]|\(.+?\)|[\w+ ?]+
Мое намерение состоит в том, чтобы использовать только самый наружный оператор. Таким образом, учитывая a(b[c]d)e
, раскол будет:
a || (b[c]d) || e
Он отлично работает, данные круглые скобки внутри скобок, или скобок внутри скобок, но ломается, когда есть скобки внутри скобок и скобки внутри скобок. Например, a[b[c]d]e
распределятся
a || [b[c] || d || ] || e.
Есть ли способ, чтобы справиться с этим, используя регулярные выражения в одиночку, не прибегая к использованию кода для подсчета количества открыто/закрыто скобки? Благодаря!
Почему вы не можете создать свой собственный парсер? –
На каком языке вы используете этот форум? Регулярные выражения могут (теоретически) не анализировать вложенные структуры. Если вы используете .NET или Perl/PCRE, вам может быть повезло, потому что у них есть некоторые дополнительные функции, которые могут. –
Язык вложенных круглых скобок не является регулярным. Следовательно, «регулярные» выражения (в математическом смысле этого слова) не соответствуют задаче. период. – Bwmat