$
— конец строки в тексте.Аналог | Описание | |
---|---|---|
() | подмаска, вложенное выражение | |
[] | групповой символ | |
{a,b} | количество вхождений от «a» до «b» | |
| | логическое «или», в случае с односимвольными альтернативами используйте [] | |
\ | экранирование спец символа | |
. | любой сивол, кроме перевода строки | |
\d | [0-9] | десятичная цифра |
\D | [^\d] | любой символ, кроме десятичной цифры |
\f | конец (разрыв) страницы | |
\n | перевод строки | |
\pL | буква в кодировке UTF-8 при использовании модификатора u | |
\r | возврат каретки | |
\s | [ \t\v\r\n\f] | пробельный символ |
\S | [^\s] | любой символ, кроме промельного |
\t | табуляция | |
\w | [0-9a-z_] | любая цифра, буква или знак подчеркивания |
\W | [^\w] | любой символ, кроме цифры, буквы или знака подчеркивания |
\v | вертикальная табуляция |
Спецсимволы внутри символьного класса
Пример | Описание | |
---|---|---|
^ | [^da] | отрицание, любой символ кроме «d» или «a» |
— | [a-z] | интервал, любой симво от «a» до «z» |
Позиция внутри строки
Пример | Соответствие | Описание | |
---|---|---|---|
^ | ^a | aaa aaa | начало строки |
$ | a$ | aaa aaa | конец строки |
\A | \Aa | aaa aaa aaa aaa | начало текста |
\z | a\z | aaa aaa aaa aaa | конец текста |
\b | a\b \ba | aaa aaa aaa aaa | граница слова, утверждение: предыдущий символ словесный, а следующий — нет, либо наоборот |
\B | \Ba\B | aaa aaa | отсутствие границы слова |
\G | \Ga | aaa aaa | Предыдущий успешный поиск, поиск остановился на 4-й позиции — там, где не нашлось a |
Символьные классы
Символьные классы в регулярных выражениях соответствуют сразу некоторому набору символов. Например, \d
соответствует любой цифре от 0 до 9 включительно, \w
соответствует буквам и цифрам, а
\W
— всем символам, кроме букв и цифр. Шаблон, идентифицирующий буквы, цифры и пробел, выглядит
так:
\w\s
POSIX
POSIX — это относительно новое дополнение семейства регулярных выражений. Идея, как и в случае с символьными классами, заключается в использовании сокращений, представляющих некоторую группу символов.
Утверждения
Поначалу практически у всех возникают трудности с пониманием утверждений, однако познакомившись с ними ближе, вы будете использовать их довольно часто. Утверждения предоставляют способ сказать: «я хочу найти в этом документе каждое слово, включающее букву “q”, за которой не следует “werty”». \s]*).
Кванторы
Кванторы позволяют определить часть шаблона, которая должна повторяться несколько раз подряд. Например, если вы хотите выяснить, содержит ли документ строку из от 10 до 20 (включительно) букв «a», то можно использовать этот шаблон:
a{10,20}
По умолчанию кванторы — «жадные». Поэтому квантор +
, означающий «один или больше раз», будет
соответствовать максимально возможному значению. Иногда это вызывает проблемы, и тогда вы можете сказать квантору
перестать быть жадным (стать «ленивым»), используя специальный модификатор. Посмотрите на этот код:
".*"
Этот шаблон соответствует тексту, заключенному в двойные кавычки. Однако, ваша исходная строка может быть вроде этой:
<a href="helloworld.htm" title="Привет, Мир">Привет, Мир</a>
Приведенный выше шаблон найдет в этой строке вот такую подстроку:
"helloworld.htm" title="Привет, Мир"
Он оказался слишком жадным, захватив наибольший кусок текста, который смог.
".*?"
Этот шаблон также соответствует любым символам, заключенным в двойные кавычки. Но ленивая версия (обратите внимание
на модификатор ?
) ищет наименьшее из возможных вхождений, и поэтому найдет каждую подстроку в двойных
кавычках по отдельности:
"helloworld.htm" "Привет, Мир"
Экранирование в регулярных выражениях
Регулярные выражения используют некоторые символы для обозначения различных частей шаблона. Однако, возникает
проблема, если вам нужно найти один из таких символов в строке, как обычный символ. Точка, к примеру, в регулярном
выражении обозначает «любой символ, кроме переноса строки». Если вам нужно найти точку в строке, вы не можете просто
использовать «.
» в качестве шаблона — это приведет к нахождению практически всего. Итак, вам
необходимо сообщить парсеру, что эта точка должна считаться обычной точкой, а не «любым символом». Это делается с
помощью знака экранирования.
Знак экранирования, предшествующий символу вроде точки, заставляет парсер игнорировать его функцию и считать обычным символом. {|}в качестве их буквальных значений.
\E
\Q
Подстановка строк
Подстановка строк подробно описана в следующем параграфе «Группы и диапазоны», однако здесь следует упомянуть о существовании «пассивных» групп. Это группы, игнорируемые при подстановке, что очень полезно, если вы хотите использовать в шаблоне условие «или», но не хотите, чтобы эта группа принимала участие в подстановке.
Группы и диапазоны
Группы и диапазоны очень-очень полезны. Вероятно, проще будет начать с диапазонов. Они позволяют указать набор подходящих символов. Например, чтобы проверить, содержит ли строка шестнадцатеричные цифры (от 0 до 9 и от A до F), следует использовать такой диапазон:
[A-Fa-f0-9]
Чтобы проверить обратное, используйте отрицательный диапазон, который в нашем случае подходит под любой символ, кроме цифр от 0 до 9 и букв от A до F:
[^A-Fa-f0-9]
Группы наиболее часто применяются, когда в шаблоне необходимо условие «или»; когда нужно сослаться на часть шаблона из другой его части; а также при подстановке строк.
Использовать «или» очень просто: следующий шаблон ищет «ab» или «bc»:
(ab|bc)
Если в регулярном выражении необходимо сослаться на какую-то из предшествующих групп, следует использовать
\n
, где вместо n
подставить номер нужной группы. Вам может понадобиться шаблон,
соответствующий буквам «aaa» или «bbb», за которыми следует число, а затем те же три буквы. Такой шаблон реализуется
с помощью групп:
(aaa|bbb)[0-9]+\1
Первая часть шаблона ищет «aaa» или «bbb», объединяя найденные буквы в группу. За этим следует поиск одной или более
цифр ([0-9]+
), и наконец \1
. Последняя часть шаблона ссылается на первую группу и ищет то
же самое. Она ищет совпадение с текстом, уже найденным первой частью шаблона, а не соответствующее ему. Таким
образом, «aaa123bbb» не будет удовлетворять вышеприведенному шаблону, так как \1
будет искать «aaa»
после числа.
Одним из наиболее полезных инструментов в регулярных выражениях является подстановка строк. A-Za-z0-9])
Он найдет любые вхождения слова «wish» вместе с предыдущим и следующим символами, если только это не буквы или цифры. Тогда ваша подстановка может быть такой:
$1<b>$2</b>$3
Ею будет заменена вся найденная по шаблону строка. Мы начинаем замену с первого найденного символа (который не буква
и не цифра), отмечая его $1
. Без этого мы бы просто удалили этот символ из текста. То же касается конца
подстановки ($3
). В середину мы добавили HTML тег для жирного начертания (разумеется, вместо него вы
можете использовать CSS или <strong>
), выделив им вторую группу, найденную по шаблону
($2
).
Модификаторы шаблонов
Модификаторы шаблонов используются в нескольких языках, в частности, в Perl. Они позволяют изменить работу парсера.
Например, модификатор i
заставляет парсер игнорировать регистры.
Регулярные выражения в Perl обрамляются одним и тем же символом в начале и в конце. Это может быть любой символ (чаще используется «/»), и выглядит все таким образом:
/pattern/
Модификаторы добавляются в конец этой строки, вот так:
/pattern/i
Мета-символы
Наконец, последняя часть таблицы содержит мета-символы. Это символы, имеющие специальное значение в регулярных выражениях. Так что если вы хотите использовать один из них как обычный символ, то его необходимо экранировать. Для проверки наличия скобки в тексте, используется такой шаблон:
\(
Шпаргалка представляет собой общее руководство по шаблонам регулярных выражений без учета специфики какого-либо языка. Она представлена в виде таблицы, помещающейся на одном печатном листе формата A4. Создана под лицензией Creative Commons на базе шпаргалки, автором которой является Dave Child. Скачать в PDF, PNG.
- Регулярные выражения
SQL LIKE — строка с заданными символами и её поиск
Навигация по уроку
- Применение предиката LIKE с простыми условиями
- Применение предиката LIKE с составными условиями
Связанные темы
- Оператор SELECT
- Подзапросы
Назад | Содержание | Вперёд>>> |
Часто с помощью предиката SQL LIKE найти нужную строку в текстовых значениях таблицы проще, чем с помощью оператора равенства (=). Предикат LIKE используется в секции WHERE. После предиката прописывается выражение, содержащее символы алфавита, а также специальные символы — знак процента (%) и подчёркивание (_).
- Символ % соответствует любому количеству любых символов, а также их отсутствую.
- Символ _ соответствует ровно одному любому символу.
Приведём виды наиболее распространённых выражений, которые используются с предикатом LIKE для поиска подстроки.
- ‘xyz%’ — любые строки, которые начинаются с букв xyz;
- ‘xyz_’ — строка длиной в определённое количество символов, которая обязательно начинается с указанных букв;
- ‘%z’ — любая последовательность символов, которая заканчивается символом z;
- ‘%Word%’ — любая последовательность символов, содержащая слово ‘Word’ в любой позиции строки;
- ‘% % %’ — строка, содержащая не менее двух пробелов.
Следует обратить внимание, что в этих выражениях Word — не то же самое, что word, так как регистр символов имеет значение.
SELECT СТОЛБЦЫ FROM ИМЯ_ТАБЛИЦЫ WHERE ИМЯ_СТОЛБЦА LIKE ВЫРАЖЕНИЕ
В примерах будем работать с базой данных «Театр». Таблица Play содержит данные о постановках. Таблица Team — о ролях актёров. Таблица Actor — об актёрах. Таблица Director — о режиссёрах. Поля таблиц, первичные и внешние ключи можно увидеть на рисунке ниже (для увеличения нажать левой кнопкой мыши). Данные будем извлекать из одной таблицы — Play.
Пример 1. Вывести спектакли, названия которых начинаются со слова ‘King’.
SELECT Name FROM Play WHERE Name LIKE ‘King%’
В результате выполнения запроса будет выведена таблица с одной строкой:
King Lear |
Пример 2. Вывести спектакли, названия которых начинаются с буквы ‘O’ и содержат 7 символов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘O______’ (подчёркивание проставлено 6 раз):
SELECT Name FROM Play WHERE Name LIKE ‘O______’
В результате выполнения запроса будет выведена таблица с одной строкой:
Othello |
Пример 3. Вывести спектакли, названия которых заканчиваются буквой ‘a’.
Пишем запрос в котором с предикатом LIKE используем выражение ‘%a’ (подчёркивание проставлено 6 раз):
SELECT Name FROM Play WHERE Name LIKE ‘%a’
В результате выполнения запроса будет выведена таблица со следующими строками:
Matilda |
Antony and Cleopatra |
Можно увидеть и запрос, в котором вводится дополнительное условие: название должно заканчиваться на ‘a’, но не на ‘ra’
Пример 4. Вывести спектакли, в названии которых содержится слово «War», например, такие как «The War That Never Ends», «The Wars of the Roses», но не «Howards End».
Пишем запрос в котором с предикатом LIKE используем выражение ‘%War%’:
SELECT Name FROM Play WHERE Name LIKE ‘%War%’
В результате выполнения запроса будет выведена таблица:
The Wars of the Roses |
The War That Never Ends |
Можно увидеть и запрос, в котором вводится дополнительное условие: название должно содержать «War», но не ‘Wars’.
Пример 5. Вывести спектакли, в названиях которых содержится не менее пяти пробелов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘% % % % % %’:
SELECT Name FROM Play WHERE Name LIKE ‘% % % % % %’
В результате выполнения запроса будет выведена таблица:
Jeeves and Wooster in Perfect Nonsense |
All s Well That Ends Well |
Morte d Arthur — Sir Thomas Malory |
Можно увидеть и запрос, в котором есть составное условие: название должно начинаться с «M» и содеражать тире (» — «)
- Страница 2
Назад | Содержание | Вперёд>>> |
Поделиться с друзьями
Строка PHP содержит определенное слово или подстроку
Строка PHP содержит: В этом руководстве мы увидим, как проверить, содержит ли строка определенный символ или подстроку.
Введение
Строка — это последовательность символов, которая может быть переменной или литеральной константой в PHP или других языках программирования. Определенная часть строки называется подстрокой .
В PHP есть несколько способов проверить, включен ли символ, слово или подстрока в другую строку. Вот различные методы, которые мы обсудим в этом уроке:
- Функция strpos () для проверки наличия в строке подстроки. Эта функция чувствительна к регистру .
- Функция stripos () для проверки наличия в цепочке подстроки. Эта функция нечувствительна к регистру .
- Использование strstr () для проверки наличия в строке подстроки
Давайте рассмотрим эти различные методы с несколькими примерами их использования.
Строка PHP содержит
Использование strpos() для проверки наличия в строке определенной подстроки
Самый простой способ проверить, содержит ли строка определенную подстроку, — использовать метод strpos():
# Синтаксическая функция strpos(строка,подстрока,смещение)
Эта функция может принимать до 3 параметров:
- Строка : Этот параметр определяет текст, в котором выполняется поиск.
- Подстрока : Этот параметр указывает подстроку, которую мы должны искать.
- Смещение ( Дополнительно ): Поиск начнется с этого количества символов, считая с начала строки. Если это число отрицательное, поиск начнется с конца строки.
Функция возвращает True , если слово или подстрока были найдены в строке, и False , если нет.
Пример 1
Следующий код вернет True
$str = 'Программирование и обработка данных Amiradata'; if (strpos($str, 'Амира') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Пример 2
Следующий код вернет False , поскольку функция strpos () чувствительна к регистру. Подстрока должна точно соответствовать искомому значению.
$str = 'Программирование и обработка данных Amiradata'; if (strpos($str, 'amira') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Пример 3
Следующий код вернет False , так как подстрока начинается с позиции 0.
$str = 'Программирование и обработка данных Amiradata'; if (strpos($str, 'Amira',2) !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Использование stripos() для проверки наличия в строке PHP определенной подстроки
Основным недостатком функции strpos () является то, что она чувствительна к регистру . Если вас не волнует регистр искомой подстроки, вы можете использовать полосы () функция. Единственная разница с функцией strpos () состоит в том, что эта функция нечувствительна к регистру .
Вот его синтаксис:
Stripos(строка,подстрока,смещение)
Эта функция также принимает 3 параметра:
- Строка : Этот параметр определяет текст, в котором выполняется поиск.
- Подстрока : Этот параметр указывает подстроку, которую мы должны искать.
- Смещение ( Дополнительно )
Возвращает True, если подстрока была найдена в основной строке, и False, если нет.
Пример 1
Приведенный ниже код возвращает True , подстрока действительно присутствует в основной строке
$str = 'Программирование и обработка данных Amiradata'; if (stripos($str, 'Амира') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Пример 2
Приведенный ниже код возвращает True , функция нечувствительна к регистру и подстрока присутствует в основной строке.
if (stripos($str, 'amira') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Использование функции strstr() для проверки наличия в строке PHP определенной подстроки
Функция strstr () работает по тому же принципу, что и функция strpos(). У него также есть нечувствительный к регистру эквивалент, называемый stristr ().
Пример 1
Эта функция возвращает
if (strstr($str, 'Амира') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Пример 2
Эта функция возвращает True , присутствует подстрока (без учета регистра)
if (stristr($str, 'amira') !== false) { эхо "истина"; } еще { эхо 'ложь'; }
Заключение
В этом уроке мы видели, что есть несколько способов проверить, присутствует ли слово или подстрока в другой строке.
Самый простой способ — использовать функцию strpos(), если вы хотите, чтобы подстрока была чувствительна к регистру. В противном случае лучше использовать функцию stripos().
Я надеюсь, что этот урок заинтересовал вас, не стесняйтесь сообщить мне в комментариях, если у вас есть какие-либо вопросы по этому вопросу.
До скорой встречи,
Назад в меню PHP
Проверить, содержит ли строка определенное слово в PHP
Главная » Проверить, содержит ли строка определенное слово в PHP
Последнее обновление 24 декабря 2020 г. Команда с царапином
СОДЕРЖАНИЕ |
1. Найти точное совпадение с использованием PHP Preg_match () Function |
999199,1199,1199,1199,1199,1199,11999,1. |
2. Используйте функцию PHP strpos() |
3. Зачем использовать preg_match(), а не strpos() . Для этого мы можем использовать функции strpos() и preg_match(). Давайте посмотрим, как это сделать.Проверить, содержит ли строка определенное слово01 Найти точное совпадение с помощью функции PHP preg_match()Вы можете использовать функцию PHP preg_match(), чтобы проверить, содержит ли текст определенное слово или нет. Использование: Функция Возврат: Эта функция вернет Пример: В следующем примере будет проверяться точное совпадение слова, как мы ищем "; еще: echo "Совпадение не найдено."; конец; Выражение Поиск без учета регистра с помощью preg_match() Для поиска без учета регистра поместите
|