[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос о регех
dadli
здраствуите.
$str = 'asttttr';

if (preg_match("#(t)?\\1\\1(?(1)[^t])#",$str)) {
echo 'yes';
}


совпадение есть, почему? я ожидал что не должен бить совпадение.



Спустя 9 минут, 13 секунд (2.01.2012 - 21:24) Winston написал(а):
Добавь якорь начала строки ^

Спустя 8 минут, 9 секунд (2.01.2012 - 21:32) dadli написал(а):
а всё ясно, мне нужен такои шаблон [^t](t)?\\1\\1(?(1)[^t]
вопрос задал я не совсем понятни.
Winston спасибо что откликнул.

Спустя 2 минуты, 30 секунд (2.01.2012 - 21:35) Winston написал(а):
Цитата (dadli @ 2.01.2012 - 20:32)
а всё ясно, мне нужен такои шаблон [^t](t)?\\1\\1(?(1)[^t]

Я имел ввиду так:
#^(t)?\\1\\1(?(1)[^t])#

Спустя 11 минут, 16 секунд (2.01.2012 - 21:46) dadli написал(а):
Winston
мне совсем другои непонятность биль, но посколку вопрос решена и мне очен трудно ето обяснить, не буду ничего сказать smile.gif
спасибо тебе еше раз. smile.gif

Спустя 18 минут, 56 секунд (2.01.2012 - 22:05) Winston написал(а):
Цитата (dadli @ 2.01.2012 - 20:46)
мне очен трудно ето обяснить

А чего тут трудного ? :)
Ты поставил ^, тем самым заставив регулярке начать поиск с самого начала строки. А вот без ^ регулярка сама выбирала себе позицию которая подходит под шаблон
(t)?\\1\\1(?(1)[^t])

То есть без использования ^, в тексте "asttttr" регулярка производила поиск, постоянно перебирая позиции, производя несколько итераций, пока не нашла подходящую строку, вот пример шагов

На первом шаге он проверял этот участок - asttttr
На втором - asttttr
На третьем - asttttr
И на четвертом, она нашла то что искала :), то есть - asttttr - (3 символа t и один символ отличный от t)

А вот при использовании ^ (якорь начала строки)
Регулярка сразу выполнила только одну итерацию, выбрав и проверив только первые 4 символа, то есть asttttr, а они как ми видим под шаблон не подходят.

Понятней стало? :)

Спустя 18 минут, 56 секунд (2.01.2012 - 22:24) dadli написал(а):
Winston
очен балшои спасибо за такои подробнои обясненя.

ну вот такои "одним посмотром" лёгки задача-вопрос:
написать шаблон, котории совпадается со строкои, вкоторм есть две символ, но ети символи не одинаковие: то есть шаблон совпадается например строкам:
a3
er

но не совпадается
tt

может ето на самом деле лёгки задача, нo сеичас для меня ето не лёгко.

Спустя 5 минут, 52 секунды (2.01.2012 - 22:30) Winston написал(а):
Цитата (dadli @ 2.01.2012 - 21:24)
написать шаблон, котории совпадается со строкои, вкоторм есть две символ, но ети символи не одинаковие

Вот так ?
#^(.)(?!\\1)#




Спустя 6 минут, 19 секунд Winston написал(а):
Или же вариант без регулярки
$str = 21;
if ($str != strrev($str)) {
echo 'yes';
}

Спустя 11 минут, 7 секунд (2.01.2012 - 22:41) dadli написал(а):
Winston
да именно так. пряма в точку попал.
регулярски варянт лучше, т.к. нет проблеми не латинским символами
спасибо балшои smile.gif

Спустя 2 минуты, 1 секунда (2.01.2012 - 22:43) Winston написал(а):
Цитата (dadli @ 2.01.2012 - 21:41)
т.к. нет проблеми не латинским символами

Не с латиницей, а с кириллицей wink.gif


_____________


когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.