Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

регулярные выражения

7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Ребят! Помогите с регулярками. Не могу никак догнать, каким образом осуществить поиск. Задача такая. Есть допустим 2 строки:
140&427&434&455&513&552&563&598&626&628&636
8&140&427&434&455&513&552&563&598&626&628&636
В них нужно найти отдельное число (стоящее между разделителями &).
Допустим я ищу число 8. Здесь в 2 строках 5 совпадений с числом 8. Т.е. ищется не отдельное число, а тупо символы 8. Собственно вопрос:
какую конструкцию нужно использовать, чтобы сделать поиск по числам между разделителей &?
P.S. Регулярки в POSIX формате.
2
03 января 2009 года
squirL
5.6K / / 13.08.2003
и в чем проблема?
/&8&/ либо /(^|&)8(&|$)/ если нужно учитывать 8-ки в начале и конце строки.
7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Что-то не работают эти варианты. Проверяю http://www.rexv.org/, использую POSIX-формат. Нифига он не находит в этих двух строках. Конкретизируя, не находит именно 8 в начале строки. Кто знает из-за чего?
P.S. squirL спасибо
12
03 января 2009 года
alekciy
3.0K / / 13.12.2005
Регулярки тут нафиг не нужны.
 
Код:
array_keys(explode('&', $string_1), 8);

Да и squirL дело говорит. Вот тебе уже два возможных способа.
7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Парни, да мне в MySQL запросах это надо использовать)))
2
03 января 2009 года
squirL
5.6K / / 13.08.2003
я не знаю, что проверяет этот сайт:
 
Код:
sq-macbook:Work squirl$ cat test.pl
#!/usr/bin/perl

while (<>) {
    print "YES\n" if /(^|&)8(&|$)/;
}
sq-macbook:Work squirl$ echo '8&140&427&434&455&513&552&563&598&626&628&636' | perl test.pl
YES

все работает, как видите. для egrep, который использует POSIX:
 
Код:
cat pattern
8&140&427&434&455&513&552&563&598&626&628&636
sq-macbook:Work squirl$ egrep '(^|&)8(&|$)' pattern
8&140&427&434&455&513&552&563&598&626&628&636
sq-macbook:Work squirl$
7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Огромное всем спасибо. Все получилось. С прошедшим нг вас)))
2
03 января 2009 года
squirL
5.6K / / 13.08.2003
Цитата: polaroid
Парни, да мне в MySQL запросах это надо использовать)))


хм. и мы должны были догадаться об этом? :) насколько я помню - в mysql синтаксис регулярных выражений не сильно отличается от POSIX.

7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Так я написал, что регулярки формата POSIX. А в mysql формат POSIX как-раз и используется
2
03 января 2009 года
squirL
5.6K / / 13.08.2003
Цитата: polaroid
Так я написал, что регулярки формата POSIX. А в mysql формат POSIX как-раз и используется


вы все таки лучше указывайте в следующий раз для чего конкретно вам нужна регулярка. потому что даже если заявлена поддержка POSIX - могут быть ньюансы. зная какой конкретно диалект вам нужен - проще дать верное решение.

7.2K
03 января 2009 года
polaroid
94 / / 05.07.2008
Ок. Спасибо вам за помощь
46K
22 января 2009 года
AD1ck
2 / / 22.01.2009
Начал знакомиться с РВ но так и не смог выполнить одну операцию.

Необходимо заменить найденые РВями строки на другой текст (replace)

есть текст выполненный в виде тегов (все обязательно закрыты)

<w1>a<w3>b</w3>c</w1>
<w1>d<w3>e</w3>f</w1>

т.е. имеются теги w1 и w3 ну и некоторые данные.
необходимо полностью заменить теги w3 кроме тех внутри которых заключен тег w1 т.е.
<w1>a<w3>b<w1>c</w1>d</w3>e</w1>

как пример должно работать так:
в тексте
<w1>a<w3>b</w3>c</w1>d <w1>e<w3>f<w1>g</w1>h</w3>i</w1>
заменить <w3>...</w3> на REPL
<w1>aREPLc</w1>d <w1>e<w3>f<w1>g</w1>h</w3>i</w1>
244
23 января 2009 года
UAS
2.0K / / 19.07.2006
Что-то типа такого, только криво, имхо, сделал:
 
Код:
preg_replace("#<w3>[^(<w1>.*</w1>)]*?</w3>#s","REPL",$needleStr);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог