Php regexp знак вопроса

Знак вопроса Regex

Насколько я знаю ? делает предыдущий токен дополнительным, как в:

colou?r соответствует colour и color

Я сначала -TEXT- регулярное выражение, чтобы получить -TEXT- часть следующим образом:

Как добавление ? останавливает регулярное выражение, чтобы правильно получить -TEXT- часть? Поскольку он использовал, чтобы сделать предыдущий токен необязательным, не останавливаясь в определенный момент, как в приведенном выше примере?

Solutions Collecting From Web of «Знак вопроса Regex»

Как вы говорите ? иногда означает «ноль или один», но в вашем регулярном выражении +? это единое целое, означающее «один или несколько – и желательно как можно меньше». (Это контрастирует с голым + , что означает «один или несколько – и желательно как можно больше»).

Как указано в документации :

Однако, если за квантификатором следует знак вопроса, тогда он становится ленивым и вместо этого сопоставляет минимальное количество раз, поэтому шаблон /\*.*?\*/ делает правильные вещи с комментариями C. Значение различных кванторов не изменяется иначе, просто предпочтительное количество совпадений. Не путайте это использование вопросительного знака с его использованием в качестве квантификатора в своем собственном праве. Поскольку он имеет два вида использования, он иногда может быть удвоен, как в \d??\d который соответствует одной цифре по предпочтению, но может соответствовать двум, если это единственный способ соответствия остальной части шаблона.

В качестве альтернативы вы можете использовать модификатор U ngreedy, чтобы установить все регулярное выражение для поиска, желательно как можно короче:

? прежде чем токен будет сокращен для , что означает: все, что от 0 до 1 появления в качестве основного.

Но + – не токен, а квантификатор. сокращенное для : 1 до бесконечных выступлений.

A? после того, как квантор устанавливает его в режим неразделения. Если в жадном режиме он соответствует максимально возможной строке. Если не жадный, он соответствует как можно меньше

Другая, возможно, основная ошибка в вашем регулярном выражении состоит в том, что вы пытаетесь сопоставить несколько произвольных символов с помощью .+? , Тем не менее, вы действительно хотите, вероятно,: «любой символ кроме -». Вы можете получить это через [^-]+ В этом случае не имеет значения, если вы делаете жадный матч или нет – повторное совпадение прекратится, как только вы столкнетесь со вторым «-» в своей строке.

  • Как получить список общих друзей на Facebook с помощью их API?
  • см., если переменная равна любым другим переменным в списке php
  • shell_exec возвращает пустую строку
  • Можно ли использовать конкатенацию строк для определения класса CONST в PHP?
  • Javascript / PHP Family Tree Builder с несколькими родителями
  • Настройка группы коротких / дружественных URL-адресов переадресации
  • Как сгенерировать код клиента с мылом PHP?
  • как получить файлы cookie из другого домена с помощью php и javascript
  • Публикация объектов JSON на Symfony 2
  • Преобразование php-массива в Javascript
  • php Объект класса DateInterval не может быть преобразован в строку
  • Массивы PHP в массивы javascript
  • Значение приращения для MySQLi Update
  • php: воссоздать и отобразить изображение из двоичных данных
  • xPath не извлекает HTML как часть содержимого

Источник

Читайте также:  Vs code создать html шаблон
Оцените статью