Задать вопрос

Почему регулярное выражение «#^\d{1,3}\.#» пропускает первый элемент массива строк?

Есть массив строк каждый из которых может начинаться с цифра и точки. В данный момент первый элемент так и начинается, но выражение "#^\d{1,3}\.#" пропускает и найдет остальных. А выражение "#\d{1,3}\.#" найдет первого элемента, но не походит, так как цифр с точкой может находиться в середине, в конце у не нужных элементов. Как решить проблему?
  • Вопрос задан
  • 2593 просмотра
Подписаться 2 Оценить 4 комментария
Решения вопроса 1
savostin
@savostin
Еще один программист
#^\d{1,3}\.#m
m (PCRE_MULTILINE)
По умолчанию PCRE обрабатывает данные как однострочную символьную строку (даже если она содержит несколько разделителей строк). Метасимвол начала строки '^' соответствует только началу обрабатываемого текста, в то время как метасимвол "конец строки" '$' соответствует концу текста, либо позиции перед завершающим текст переводом строки (в случае, если модификатор D не установлен). В Perl ситуация полностью аналогична. Если этот модификатор используется, метасимволы "начало строки" и "конец строки" также соответствуют позициям перед произвольным символом перевода и строки и, соответственно, после, как и в самом начале и в самом конце строки. Это соответствует Perl-модификатору /m. В случае, если обрабатываемый текст не содержит символов перевода строки, либо шаблон не содержит метасимволов '^' или '$', данный модификатор не имеет никакого эффекта.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rOOse
@rOOse
Frontend developer
Не лучше ли хранить в json? Тогда никакой регулярки не нужно будет.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы