Мне нужно регулярное выражение, чтобы поймать что-либо между круглыми скобками, кроме случаев, когда оно находится между следующим шаблоном, символом S
, за которым следуют квадратные скобки:
S[]
Как в этом предложении:
I am a (test) S[ but i am (not catched)], catch (me (if you can))
^^^^^^ ^^^^^^^^^^^^^^^^^ # should be matched
^^^^^^^^^^^^^^^^^^^^^^^^^^ # should not be matched
Это также должно поймать вложенные круглые скобки.
Я пытался заставить его работать, используя различные примеры, но самый близкий я получил это:
(?![^S\[]*\])\(([^()]*|\(([^()]*|\(([^()]*|\([^()]*\))*\))*\))*\)?
=> но это не удалоськогда вы удаляете S
из тестового предложения.
Есть идеи, как это сделать?
Редактировать : должно совпадать, как в этом случае, но с Sна учет: https://regex101.com/r/WzECSS/1
Редактировать: этот должен сделать трюк: (?<!S\[[^\]]+)\((?:[^()]|\([^)]*\))+\)
спасибо @ ctwheels