У меня есть следующая строка
([Valor][Corr][Fat]: 6M UC x Viz. Lógicos IN('3','6')) AND (((SUM_RevisionAnomalia_UltRevision_1M = 1) AND (CANT_ConsumoFact_UltRevision_1M > 1)) OR ((SUM_RevisionNoAnomalia_UltRevision_1M + 1) AND (CANT_ConsumoFact_UltRevision_1M BETWEEN 1 - 2))) OR (SUM_RevisionNoAnomalia_UltRevision_1M <= 1)
и я пытаюсь извлечь все внутренние группы, поэтому мой ответ должен содержать
([Valor][Corr][Fat]: 6M UC x Viz. Lógicos IN('3','6'))
(SUM_RevisionAnomalia_UltRevision_1M = 1)
(CANT_ConsumoFact_UltRevision_1M > 1)
(SUM_RevisionNoAnomalia_UltRevision_1M + 1)
(CANT_ConsumoFact_UltRevision_1M BETWEEN 1 - 2)
(SUM_RevisionNoAnomalia_UltRevision_1M <= 1)
Это довольно легко извлечь, когда в круглых скобках есть только 1 набор этих строк, но в приведенном выше примере мое регулярное выражение захватывает всю строку. Я использую регулярное выражение
/(\([a-zA-Z0-9\[\]:_+=-\s\.\(\),'óáéíúüçãôàäê><]+\))/g
(
и)
, что не является(
и)
, если только это не(...)
, которым предшествует символ слова? Попробуйте/\((?:[^()]|\b\([^()]*\))*\)/g
- person Wiktor Stribiżew   schedule 19.02.2016