Нужна помощь в Regex, подстрока между двумя скобками

Существует основная строка: –

" ... [ ... SUB_STRING_TO_BE_SEARCHED ... ] ... [ ... THIS_SHOULD_NOT_GET_SELECTED ... ]" 

Шаг 1: Мне нужно найти SUB_STRING_TO_BE_SEARCHED.

Шаг 2: Затем переместитесь влево от подстроки (пренебрегая чем-либо между ними), и я найду скобку '['

Шаг 3: Затем перейдите вправо от подстроки (пренебрегая чем-либо между ними), и я найду скобок ']'

Шаг 4: Наконец, я хочу выбрать все между этими двумя скобками и удалить его.

Конечная строка: –

 " ... ... [ ... THIS_SHOULD_NOT_GET_SELECTED ... ]" 

 $string = " ... [ ... SUB_STRING_TO_BE_SEARCHED ... ] ... [ ... THIS_SHOULD_NOT_GET_SELECTED ... ]"; $string = preg_replace('#\[.*?SUB_STRING_TO_BE_SEARCHED.*?\]#', '', $string); var_dump($string); 

Если вы хотите получить более надежное решение, вы можете использовать поисковые запросы:

 ( # group and capture to $1 \[ # match '[' (?<= # look behind to see if there is \[ # '[' ) # end of look-behind [^\[\]]* # any character except: '\[', '\]' (0 or more) SUB_STRING_TO_BE_SEARCHED # 'SUB_STRING_TO_BE_SEARCHED' [^\[\]]* # any character except: '\[', '\]' (0 or more) (?= # look ahead to see if there is \] # ']' ) # end of look-ahead \] # ']' ) # end of capturing group 1 ) 

Вывод:

 string(50) " ... ... [ ... THIS_SHOULD_NOT_GET_SELECTED ... ]" 

Демо-версия Regex101

Этот шаблон можно использовать для поиска строки в квадратных скобках:

 \[[^\]]*?SUB_STRING_TO_BE_SEARCHED.*?\] 

Остальное будет просто использовать функцию замены.