Перейти к содержимому

Реферальная программа Мегаплана


Обрезка урлов (URL)

#11 T(h)rasher

T(h)rasher
    Topic Starter
  • Пользователь
  • 22 сообщений
  • Репутация: 1
0

Отправлено 22 Май 2014 - 06:28

matroskin8, огромное спасибо за детальное разъяснение!) Такой вопрос: насколько я понял, символ "#" обозначает начало и конец строки в вашем примере. Тогда зачем перед вторым символом "#" нужен символ "$"?


  • 0

#12 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 22 Май 2014 - 09:17


matroskin8, огромное спасибо за детальное разъяснение!)

Пожалуйста)

 


Такой вопрос: насколько я понял, символ "#" обозначает начало и конец строки в вашем примере.

Нет. Этот символ является ограничителем шаблона, т.е. все, что находится между этими двумя символами, и является шаблоном регулярного выражения. Ограничителями могут быть любые парные символы (т.е. в начале и конце шаблона символы должны быть одинаковы: #шаблон#), кроме альфанумериков (букв и цифр). Часто ограничителями шаблона ставят слеши. Также можно видеть тильды, восклицательные знаки, собаки и т.д. Я в большнистве случаев использую именно решетки.

 


Тогда зачем перед вторым символом "#" нужен символ "$"?

А вот знак доллара как раз и указывает на позицию конца строки. Т.е. в шаблоне мы как бы начинаем поиск совпадения с конца строки и до первого слеша от конца строки.


  • 1


#13 T(h)rasher

T(h)rasher
    Topic Starter
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 26 Май 2014 - 11:56

Нет. Этот символ является ограничителем шаблона, т.е. все, что находится между этими двумя символами, и является шаблоном регулярного выражения. Ограничителями могут быть любые парные символы (т.е. в начале и конце шаблона символы должны быть одинаковы: #шаблон#), кроме альфанумериков (букв и цифр). Часто ограничителями шаблона ставят слеши. Также можно видеть тильды, восклицательные знаки, собаки и т.д. Я в большнистве случаев использую именно решетки.

 

 

А для чего вообще необходимо указывать ограничители шаблона? Вроде же регулярное выражение и без них работает...

 

 

А вот знак доллара как раз и указывает на позицию конца строки. Т.е. в шаблоне мы как бы начинаем поиск совпадения с конца строки и до первого слеша от конца строки.

 

Первый слеш от конца строки  - это ограничитель шаблона?


  • 0

#14 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 26 Май 2014 - 12:39


А для чего вообще необходимо указывать ограничители шаблона? Вроде же регулярное выражение и без них работает...

Нет, регулярное выражение не может работать без них... без ограничителей вы получите ошибку.

А необходимо их указывать потому, что так требует синтаксис... это как кавычки для строк, строка должна быть обрамлена кавычками, так и шаблон регулярного выражения - он должен быть заключен в символы-ограничители.

 


Первый слеш от конца строки - это ограничитель шаблона?

Нет. Ограничители шаблонов (я уже говорил об этом) - это парный символ (т.е. в начале и конце шаблона символы должны быть одинаковы: #шаблон#). В этом примере:

$pattern = "#.*/(.+)$#";

в начале и в конце шаблона знак решетки это и есть ограничитель шаблона (своеобразные кавычки для строки шаблона, если так будет проще).


  • 0


#15 YourKey

YourKey
  • Пользователь
  • 5 сообщений
  • Репутация: 2

Отправлено 27 Май 2014 - 11:22

При использовании регулярных выражений в PHP ограничители нужны. Если к примеру просто в нотепаде проверять регулярку, то не нужны. Вот вам шпаргалка. После последнего ограничителя еще могут быть указаны модификаторы шаблонов, например для игнорирования регистра, поддержки UTF-8 и другие... Все на картинке есть.

regexp.png


  • 1

#16 T(h)rasher

T(h)rasher
    Topic Starter
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 30 Май 2014 - 12:51

Спасибо всем за помощь.


  • 0


Оформление форума – IPBSkins.ru