Модифицировать регулярку

235
02 февраля 2019, 07:20

Есть такая регулярка которая выбирает все что находится между скобок вместе с ними, у меня никак не получается добавить исключение что бы пропускало скобку со словом table внутри. Может кто поможет.

/\[[^\]]*\]/
Answer 1

Вы можете использовать

'~\[(?![^][]*table)[^][]*]~'

или, если слово table должно быть целым словом:

'~\[(?![^][]*\btable\b)[^][]*]~'

См. демо регулярного выражения

Подробности

  • \[ - символ [
  • (?![^][]*\btable\b) - негативный блок предварительного просмотра вперёд, который, при наличии совпадения шаблона, отменяет совпадение:
    • [^][]* - 0 и более символов, отличных от [ и ]
    • \btable\b - целое слово table (если проверка на целое слово необязательна, удалите \b)
  • [^][]* - 0 и более символов, отличных от [ и ]
  • ] - символ ].

PHP-демо:

$re = '/\[(?![^][]*\btable\b)[^][]*]/';
$str = '[kjkj] jkhjkhjk [table] [wedfwefwef] [bgfghfghf] [fvdfvd][sdfsd] [terms] [5465456] jkhjkhjkh';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
print_r($matches[0]); // => Array ( [0] => [kjkj] )
READ ALSO
Стандартные методы шифрования php

Стандартные методы шифрования php

Есть ли в php - функция для шифрования строк в HEX представление ? Именно шифрования а не хеширования, функция должна быть обратимойПри этом количество...

207
Поддомены и роутинг в laravel

Поддомены и роутинг в laravel

Как на laravel можно организовать динамический роутинг по поддоменам для реферальной системы? Те нужно к примеру с поддомена user1example

183
с помощью чекбокса отправить запросы в бд, передавая массив значений

с помощью чекбокса отправить запросы в бд, передавая массив значений

Делаю личную интеграцию под биржу криптовалютУ меня есть список ВОЗМОЖНЫХ ставок (ордеров), каждая их которых оформлена как form, передающая...

162
Работы с массивами с ключами PHP

Работы с массивами с ключами PHP

Есть массив на PHP вида:

192