Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2010, 16:13   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
Восклицание регулярные выражения

вот есть функция preg_match("|^[\d]*$|", $_POST['number']). ^ означает начало строки, $ - конец. а что значит *
???
Dimarik вне форума Ответить с цитированием
Старый 17.07.2010, 16:46   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

* означает, что предыдущее условие (в вашем случае - цифра) может встречать ноль или более раз


А вот цитата из хелпа к программке, использующей регэкспы:
Цитата:
Квантификаторы
За любым знаком, группой или классом символов может идти один из
квантификаторов:

? - жадное совпадение 0 или один раз.
?? - нежадное совпадение 0 или один раз.
* - жадное совпадение 0 или более раз.
*? - нежадное совпадение 0 или более раз.
+ - жадное совпадение 1 или более раз.
+? - нежадное совпадение 1 или более раз.
{n} - совпадение точно n раз.
{n,} - жадное совпадение n или более раз.
{n,}? - нежадное совпадение n или более раз.
{n,m} - жадное совпадение не меньше чем n, но не больше чем
m раз.
{n,m}? - нежадное совпадение не меньше чем n, но не больше чем
m раз.
{,m} - эквивалентно {0,m}
{,m}? - эквивалентно {0,m}?

Что такое "жадный" и "нежадный" квантификатор
Жадный квантификатор захватывает как можно больше. И только, если
дальнейшего совпадения не получилось, "отдаёт" захваченное (происходит "откат",
не самая "дешевая" операция).
Если выражение "A.*Z" сопоставить строке
"AZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" , то .* сначала захватит всю строку, а потом
будет по одному знаку "откатываться" пока не найдёт Z. А если выражение будет
"A.*?Z" то Z найдётся сразу же. Нежадный квантификатор еще называют
минимизирующим, он захватывает минимально возможное количество знаков, и
только, если дальнейшее совпадение не получилось, захватывает еще.

Последний раз редактировалось Serge_Bliznykov; 17.07.2010 в 16:50.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.07.2010, 17:14   #3
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

то есть "нежадный" A.*?Z со строкой AXZ будет работать так:
видим А - откладываем, видим Х - отбрасываем и прекращаем работу?
или видим Х- отбрасываем, двигаемся дяльа. Видим Z - откладываем. ОКонец строки - завершаем работу
Dimarik вне форума Ответить с цитированием
Старый 17.07.2010, 21:56   #4
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Поясните, пожалуйста максимально подробно вот это регулярное выражение. Как я понял это регулярное выражение Perl
preg_match(("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$i"), $_POST['email'])
^ - означает отрицание,
[0-9a-z_] - все цифры, буквы нижнего регистра и подчёркивание
i - игнорировать регистр букв
$ - это значит что вот это \.[a-z]{2,6} идёт в конце.
и вообще ведь регулярные выражения Perl, как пишет Михаил Флёнов, заключаются между двумя слэшами.... то есть тут не правильно написано или как? поясните мне пожалуйста аргументы в этом выражении.. очень надо.. очень
Dimarik вне форума Ответить с цитированием
Старый 17.07.2010, 23:02   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
то есть "нежадный" A.*?Z со строкой AXZ будет работать так:
видим А - откладываем, видим Х - отбрасываем и прекращаем работу?
нет. никто не будет прекращать работу! У Вас же между A и Z стоит точка (это любой символ) а звёздочка - любое число раз.
Жадность/не жадность на другом примере проявятся.
вот, для строчки AXZZZZ
A.*?Z - вернёт AXZ
а
A.*Z вернёт AXZZZZ

Цитата:
Код:
("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}
сначала строки идёт цифра или маленькая английская буква или подчёркивание - один или больше раз.
потом знак at коммерческое ("собака") - @
потом любое число (1 или больше из цифр, маленьких букв и подчёриваний и точек)
потом точка и маленькие английские буквы (от 2 до 6 букв) (это домен).

в целом выделится корректный email адрес.

p.s. может стоит книжки почитать? или хотя бы в интернете уроки по регулярным выражениям?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.10.2010, 00:59   #6
TrydORgolik
Пользователь
 
Регистрация: 11.09.2009
Сообщений: 21
По умолчанию

Помогите, пожалуйста, составить регулярку для выделения числа со строки.
Вот пример: http://tryd.org/profsoyuz/viewtopic....8758cd663370d8
Мне нужно получить число после "t=" до "&sid".
Спасибо.
А що там... за небокраем..?
TrydORgolik вне форума Ответить с цитированием
Старый 21.10.2010, 01:27   #7
TrydORgolik
Пользователь
 
Регистрация: 11.09.2009
Сообщений: 21
По умолчанию

Сам дошел: '((.*)\=(\d+)&(.*))', '$2'
А що там... за небокраем..?
TrydORgolik вне форума Ответить с цитированием
Старый 21.10.2010, 01:47   #8
TrydORgolik
Пользователь
 
Регистрация: 11.09.2009
Сообщений: 21
По умолчанию

А как сделать, чтобы это регулярное выражение распространялось и на случаи:
1) вместо полного адреса темы задается ее номер и он же возвращается preg_replace;
2) адрес темы задается без идентификатора сессии, а возвращается опять же номер темы ?
Спасибо.
А що там... за небокраем..?
TrydORgolik вне форума Ответить с цитированием
Старый 09.12.2010, 20:32   #9
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Плиз помогите для php составить регулярку. Нужно получить значение из -[ ]-

пример:
<html> -[text]-<head>...

Нужно получить text... Т.е. нужно получить то что ограничено символами -[ и ]-
BarakudaX777 вне форума Ответить с цитированием
Старый 09.12.2010, 20:54   #10
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Имхо, в данном случае легче с explode сделать.
Код:
$text=explode('-[',$str);
$text=explode(']-',$text[1]);
echo $text[0];
motorway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения Syltan JavaScript, Ajax 3 24.04.2010 23:08
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
регулярные выражения wyvern PHP 3 09.04.2009 22:15
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44