@OwerFan

Не понять регулярку?

У меня такой вопрос.По регулярным выражениям
вот это правило поиска /\[(.+?)\]/ что должно делать?
Я рассуждаю так. Найди мне то, что заключено в квадратных скобках, это может быть любой символ, в количестве от одного до бесконечности. Символ? говорить что это должно быть от 0 до 1. Не понимаю. Там еще группировка есть()
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
trapwalker
@trapwalker
Программист, энтузиаст
Эта регулярка будет совпадать с текстом, начинающимся с открывающейся квадратной скобки, состоящий из одного или более любых символов вплоть до ближайшей закрывающей скобки.
Вопросик нужен, чтобы плюсик был нежадным, то есть не сожрал закрывающуюся скобку тоже. По умолчанию + и * жадные, то есть сожрут как можно больше символов, но чтобы в целом выражение сматчилось.
Если ваш текст "12[34]56[78]90", то жадная регулярка (без вопросика) найдёт "[34]56[78]", а не жадная найдёт "[34]" и "[78]".
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Знак вопроса в данном случае - это квантификатор жадности.
Ответ написан
Oxyd
@Oxyd
Linux enthusiast
Всё просто. Идём на regex101 вводим регулярку, читаем справа описание, вводим тестовые строчки ниже для проверки.
В общем и целом. Посимвольно: Ищем одиночный символ [ -- \[. Потом у нас идёт группа в скобках (.+?) . -- любые символы(кроме перевода строки), +? -- повторённые один или неограниченное количество раз. И наконец ищем закрывающую квадратную скобку ] -- \]. В результате эта регулярка ищет строку любой длинны в квадратных скобках.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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