Страница 1 из 2
Регулярные выражения
Добавлено: 18 янв 2007, 01:06
pashtet
Подскажите пожалуйста, мне нужно найти в строке выражение вида [c10af7c] и заменить его на <font color=10af7c>. Ну как видно мне это нужно для замены псевдотегов на реальные. То есть квадратные скобки в которых буква "c" и за которой следуют 6 шестнадцатеричных цифр. Я знаю что это делается с помощью регулярных выражений, но я никак немогу сделать, и вообще плохо представляю как работают эти самые регулярные выражения. Немогли бы вы мне показать как это делается?
Совсем забыл. Это надо сделать на php
Re: Регулярные выражения
Добавлено: 18 янв 2007, 12:33
Duncon
Не напрягайся регулярные - гемор для мозгов юзай что-то типо этого
str_replace("что", "на что", "где");
Re: Регулярные выражения
Добавлено: 18 янв 2007, 13:30
isms.ru
s/\[c([A-Fa-f0-9)\]/<font color=$1>/gs
Re: Регулярные выражения
Добавлено: 18 янв 2007, 13:42
Absurd
Duncon писал(а):Не напрягайся регулярные - гемор для мозгов юзай что-то типо этого
str_replace("что", "на что", "где");
Интересно, как ты намереваешься проверять валидность к примеру E-Mail адреса при помощи простых строчных функций.
Re: Регулярные выражения
Добавлено: 18 янв 2007, 17:45
Duncon
Здесь вопрос стоял о замене текста, а не о проверке мыла..
хотя и это тоже можно сделать без регулярнаых
Re: Регулярные выражения
Добавлено: 18 янв 2007, 18:01
Absurd
Duncon писал(а):Здесь вопрос стоял о замене текста, а не о проверке мыла..
хотя и это тоже можно сделать без регулярнаых
Не сомневаюсь в наличии каких-нибудь check_email()/check_url() в PHP, но проверка строк на соответствие шаблону не исчерпывается email и url'ами. И регулярные выражения - это единственно допустимый способ это делать. С заменой - тоже самое.
Re: Регулярные выражения
Добавлено: 18 янв 2007, 19:47
Duncon
Не, не так, нет единственного способа ни в одном языке, вот смотри есть такая ункция strstr - проверяет на наличее в строке..
Ну и теперь скажи что без регулярных не обойтись..
(ps я не против регулярных, но как факт можно и без них)
Re: Регулярные выражения
Добавлено: 18 янв 2007, 20:06
pashtet
isms.ru писал(а):s/\[c([A-Fa-f0-9)\]/<font color=$1>/gs
А как это работает? куда вставлять?
Я нашёл ток такой привер
$str = "May 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "1 \${1} \$3";
print preg_replace($pattern, $replacement, $str);
Но что из твоей строки pattern а что replacement? у тебя же оно получилось неделимое
Re: Регулярные выражения
Добавлено: 18 янв 2007, 23:10
pashtet
Duncon писал(а):Не, не так, нет единственного способа ни в одном языке, вот смотри есть такая ункция strstr - проверяет на наличее в строке..
Ну и теперь скажи что без регулярных не обойтись..
(ps я не против регулярных, но как факт можно и без них)
Такие функции неподходят, потому что в них нужно явно указывать что на что менять, или нет? А раз так значит придётся перечислять всевозможные варианты - 16 в 6 степени. Многовато получается.
Re: Регулярные выражения
Добавлено: 19 янв 2007, 08:50
isms.ru
А в задаче не стояло, на каком языке писать. Я написал на перле.
s/\[c([A-Fa-f0-9)\]/<font color=$1>/gs
s - что происходит замена
\[c([A-Fa-f0-9)\] - это что ищется типа паттерн
<font color=$1> - это на что меняется
gs - ключи
2Duncon: однозначности нет, но иногда удобнее. Например с помощью регекспов RSS парсю - одна строчка кода :-)