Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
28 / 24 / 2
Регистрация: 11.12.2012
Сообщений: 448

Регулярное выражение не совпадает

18.05.2013, 15:43. Показов 1099. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
<?php
$reg = "/^d$/";
echo preg_match($reg,"dd");
?>
Почему следующий код выводит 0? Вроде бы выражение начинается на d и оканчивается на d. Получается, что в связке так строго работает?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2013, 15:43
Ответы с готовыми решениями:

Выражение плохо совпадает с русскими буквами
Здравствуйте. Почему-то строка, которая, по-моему, должна проверку проходить, её не проходит. Проверяются данные, посланные PHP...

Регулярное выражение
Здравствуйте.Подскажите.В тексте встречаются такие подстроки ---Universal dictionary---fТ.е. три тире, текст, три тире и англ буква f или...

Регулярное выражение
Собственно не могу понять. В онлайновом редакторе регулярок все работает, но стоит засунуть в php и fail за fail'ом Вот тут у них...

9
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
18.05.2013, 15:57
Всё верно. Выражение означает "если имеется выражение d". Если хотите чтоб просто давал тру, когда есть буква d, то
Code
1
/[d]/
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
18.05.2013, 16:03
Цитата Сообщение от Euroman Посмотреть сообщение
Вроде бы выражение начинается на d и оканчивается на d
Выражение /^d$/ говорит: «начало, буква d (ровно одна), конец».
1
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
18.05.2013, 16:03
Цитата Сообщение от Euroman Посмотреть сообщение
Почему следующий код выводит 0? Вроде бы выражение начинается на d и оканчивается на d. Получается, что в связке так строго работает?
Забавный вопрос)

Видимо вы не совсем доконца поняли как работает функция preg_match.
preg_match, возвращает "1", если совпадения найдены, или "0", если совпадений нет.
Соответственно, в данном случаи совпадений не найдено.
Что бы узнать совпадения, используеться 3ий парамет функции.
Пример, что бы вы более ясно поняли, о чем идет речь:
PHP
1
2
3
4
5
6
7
8
9
10
$reg = "/^d$/";
$subject = "dd";
 
if ( preg_match($reg, $subject, $matches) ) {
    print_r($matches);
} else {
    echo ':(';
}
 
// Результат: :(
PHP
1
2
3
4
5
6
7
8
9
10
$reg = "/^dd$/";
$subject = "dd";
 
if ( preg_match($reg, $subject, $matches) ) {
    print_r($matches);
} else {
    echo ':(';
}
 
// Результат: Array ( [0] => dd )
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.05.2013, 16:05
Цитата Сообщение от BuPy7 Посмотреть сообщение
Выражение означает "если имеется выражение d"
не совсем так. Если имеется именно такое выражение, без других символов. ^ и $ означают начало и конец строки соответственно.

Добавлено через 36 секунд

Не по теме:

..и накинулись аки коршуны.. о_О :D

1
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
18.05.2013, 16:10
Цитата Сообщение от Pafos Посмотреть сообщение
Забавный вопрос)
Сорри, не правильно понял вопрос. :\
1
18.05.2013, 16:12

Не по теме:

KOPOJI, это понятно. Я просто объяснил так автору, чтоб тот понял, что от выражения он ожидает совсем не то.

1
28 / 24 / 2
Регистрация: 11.12.2012
Сообщений: 448
18.05.2013, 16:41  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
не совсем так. Если имеется именно такое выражение, без других символов. ^ и $ означают начало и конец строки соответственно.

Добавлено через 36 секунд

Не по теме:

..и накинулись аки коршуны.. о_О :D

А здесь получается лишним первый или второй d?

При dd разве начало и конец строки не совпадают?
0
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
18.05.2013, 16:42
Да ходь первый, ходь второй. При твоём выражении, тебе нужно чтоб был только один символ d. И всё.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.05.2013, 18:25
Euroman, при указании символов начала и конца строки имеется в виду, что выражение, которое находится между ними в точности соответствует переданной строке, без любых других символов более. Т.е. при такой записи
PHP
1
preg_match('~^word$~', 'word'); // 1
будет найдено вхождение. Однако,стоит добавить любой символ в начале или в конце строки, как уже ничего не найдется
PHP
1
preg_match('~^word$~', 'word ');  // 0
если вы хотите сделать другое количество - то необходимо либо указать границы, либо использовать квантификаторы, т.е., наподобие такого d{1,} или d+ или d*. Причем здесь первый и второй способ означают одно и тоже - один или более символов, а последний - любое число символов (также, как и их отсутствие вообще). Почитайте прикрепленную здесь тему

Добавлено через 1 минуту
в вашем же случае данная запись означает тоже самое, что и d{1} - т.е. символ d, и только один раз.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2013, 18:25
Помогаю со студенческими работами здесь

Регулярное выражение
Доброе утро, вчера столкнулся с проблемой правильности регулярного выражения в общем есть такое выражение /\+)]\((+)\)/i И...

Регулярное выражение
из строки: нужно получить

регулярное выражение...
нужно из &lt;A HREF=&quot;acdc.htm&quot;&gt;AC/DC получить acdc.htm название группы и файла могут быть разными.

регулярное выражение
Любые символы идут любые символылюбые символы Нужно заменить УРЛ на 1УРЛ1

регулярное выражение
Имеем строку http://img.yandex.net/i/www/logo.png нужно вытащить то что между и


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru