регулярные выражения
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 формате.
/&8&/ либо /(^|&)8(&|$)/ если нужно учитывать 8-ки в начале и конце строки.
http://www.rexv.org/, использую POSIX-формат. Нифига он не находит в этих двух строках. Конкретизируя, не находит именно 8 в начале строки. Кто знает из-за чего?
P.S. squirL спасибо
Что-то не работают эти варианты. Проверяю
P.S. squirL спасибо
Код:
array_keys(explode('&', $string_1), 8);
Да и squirL дело говорит. Вот тебе уже два возможных способа.
Парни, да мне в MySQL запросах это надо использовать)))
Код:
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
#!/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$
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$
Огромное всем спасибо. Все получилось. С прошедшим нг вас)))
Цитата: polaroid
Парни, да мне в MySQL запросах это надо использовать)))
хм. и мы должны были догадаться об этом? :) насколько я помню - в mysql синтаксис регулярных выражений не сильно отличается от POSIX.
Так я написал, что регулярки формата POSIX. А в mysql формат POSIX как-раз и используется
Цитата: polaroid
Так я написал, что регулярки формата POSIX. А в mysql формат POSIX как-раз и используется
вы все таки лучше указывайте в следующий раз для чего конкретно вам нужна регулярка. потому что даже если заявлена поддержка POSIX - могут быть ньюансы. зная какой конкретно диалект вам нужен - проще дать верное решение.
Ок. Спасибо вам за помощь
Необходимо заменить найденые РВями строки на другой текст (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>
Код:
preg_replace("#<w3>[^(<w1>.*</w1>)]*?</w3>#s","REPL",$needleStr);