Чем отличаются якоря начала строки ^
и начала текста \A
я думал второй действует только на буквы, но нет, он и пробел и символы видит.
Такой же вопрос про конец строки $
и конец текста \Z
В PHP работают регулярки с якорями на начало слова /<
и конец слова />
? Т.к. тест показывает что он просто видит тег https://regex101.com/r/Ly86wY/1
Чем отличаются якоря начала строки ^ и начала текста \A я думал второй действует только на буквы, но нет, он и пробел и символы видит.
Якорные метасимволы и другие «проверки с нулевой длиной совпадения» совпадают не с реальными символами, а с позициями в тексте.
Метасимвол ^ совпадает в начале текста, в котором производится поиск, или в расширенном режиме привязки к границам строк (при использовании модификатора m) - в позиции после любого символа новой строки. Метасимвол \A (если он поддерживается) совпадает только в начале текста, независимо от режима поиска.
Такой же вопрос про конец строки $ и конец текста \Z
Концепция «конца строки» несколько сложнее парной ей концепции начала строки. В разных реализациях $ интерпретируется по-разному. В самом распространенном варианте он совпадает с концом целевого текста перед завершающим символом новой строки. Это сделано для того, чтобы выражения вида ~s$~
(«строка,заканчивающаяся символом s») совпадали с комбинациями символов ~…s\n~
в тексте, когда строки завершаются буквой s и символом новой строки.
Выбор режима может повлиять на интерпретацию $, в результате он будет соответствовать любым промежуточным символам новой строки в блоке текста.
Метасимвол \Z (если он поддерживается) соответствует метасимволу $ в стандартном режиме, что означает совпадение в конце текста или перед символом новой строки, завершающим текст. Парный метасимвол \z совпадает только в конце строки, без учета возможных символов новой строки.
В PHP работают регулярки с якорями на начало слова /< и конец слова />? Т.к. тест показывает что он просто видит тег
В PHP для обозначения границы слова используется последовательность символов \b. Она совпадает не с символом, а с определенной позицией в строке. Также определяется метапоследовательность для любой позиции, не являющейся границей слова \B.
Программы, которые не различают якорные метасимволы для начала и конца слова, но поддерживают опережающую проверку, могут имитировать их при помощи опережающей проверки:
(?<!\pL)(?=\pL)
- эквивалент позиции, являющейся границей слова \b
(?<=\pL)(?!\pL)
- эквивалент позиции, не являющейся границей слова \B
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты