@GeKskill

Круглые кавычки Regex, что изменить?

Есть такой regex, https://regex101.com/r/5CjEGw/1 который выбирает shortcode из текста, но не выходит выбрать те, что содержат круглые скобки. Как можно поправить?
$re = '/(?P<shortcode>(?:(?:\[))(?P<name>[\w\-]{3,})(?:\s(?P<attrs>[\w\d,\s=\"\'\-\+\#\%\!\~\`\&\.\s\:\/\?\|]+))?(?:\])(?:(?P<content>[\w\d\,\!\@\#\$\%\^\&\*\(\\\\\\\\)\s\=\"\'\-\+\&\.\s\:\/\?\|\<\>]+)(?:\[\/[\w\-\_]+\]))?)/m';
$str = '[attribute name="vid-drevesiny" text_before="(" text_after=")"] [attribute name="vid-drevesiny"] ';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);


в итоге рабочие варианты для выделения шорткодов:
1)
$re = '/(?P<shortcode>(?:(?:\[))(?P<name>[\w\-]{3,})(?:\s(?P<attrs>[\w\d,\s=\"\'\-\+\#\%\(\)\!\~\`\&\.\s\:\/\?\|]+))?(?:\])(?:(?P<content>[\w\d\,\!\@\#\$\%\^\&\*\(\\\\\\\\\\\\\\\\)\s\=\"\'\-\+\&\.\s\:\/\?\|\<\>]+)(?:\[\/[\w\-\_]+\]))?)/mu'


2)
$re = '/(?P<shortcode>\[(?P<name>[\w\-]{3,})(?:\s+(?P<attrs>[\w\d,\s="\'\-+#%!~`&.:\/()?|]+))?\](?:(?P<content>[\w\d\s,!@#$%^&*(\\)="\'\-+&.:\/?|<>]+)(?:\[\/[\w\-\_]+\]))?)/mu';
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
$re = '/(?P<shortcode>\[(?P<name>[\w\-]{3,})(?:\s+(?P<attrs>[\w\d,\s="\'\-+#%!~`&.:\/()?|]+))?\](?:(?P<content>[\w\d\s,!@#$%^&*(\\)="\'\-+&.:\/?|<>]+)(?:\[\/[\w\-\_]+\]))?)/m';

Значится где-то вооо-о-о-о-ооо так!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
есть ещё ≈100питсот милььёнов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы