Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Знак ~ в регулярном выражении
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
"~[^a-zA-Z0-9_\.-]~"
Что дает знак тильда в этой регулярке?)
----- У всего есть обратная сторона.
EuGen
Отправлено: 21 Сентября, 2011 - 10:19:40
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ничего не делает, это просто разграничитель для PHP - с таким же успехом можно записать
#[^a-zA-Z0-9_\.-]#
или например
@[^a-zA-Z0-9_\.-]@
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
LIME
Отправлено: 21 Сентября, 2011 - 10:27:35
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
следует заметить что разграничитель хоть и может быть любым символом(почти)
но следует его экранировать если он встречается внутри регулярки (Добавление)
классически применяется разграничитель"/"
но часто его заменяют на другой чтобы не экранировать слэши внутри регулярки
Росич
Отправлено: 21 Сентября, 2011 - 11:28:10
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Сент. 2011
Помог: 0 раз(а)
Именно поэтому исторически Я практически всегда использую #...# - так как он внутри встречается почти никогда .
zypikov
Отправлено: 21 Сентября, 2011 - 14:48:56
Частый гость
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Помог: 3 раз(а)
спасибо! А то вроде всю документации по регуляркам посмотрел, думаю что за символ такой)
Помогите исчо
bxc2xbeac c2xb wavol c2xb dddeoq - в этой строке нужно найти все c2xb окруженные пробелами, перед которыми точно не идут одной и больше d, и заменить их скажем на "~~~~".
"/(\s)(c2xb)(\s)([^d+])/" - моя регулярка, только "съедает" первую w в первой замене:
bxc2xbeac~~~~avol c2xb dddeoq
----- У всего есть обратная сторона.
LIME
Отправлено: 21 Сентября, 2011 - 14:51:58
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
zypikov пользуюсь своей загадочной способностью к предвидению и предположу что вы применяет preg_match
посмотрите http://php.su/functions/?preg_match_all (Добавление)
впредь давайте код или сами думайте
уважайте помошников тем более мы это делаем безвозмездно
zypikov
Отправлено: 21 Сентября, 2011 - 17:13:55
Частый гость
Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
f111 по условиям границы замены есть пробелы
а границой слова могуть любые символы кроме букв и цифр (Добавление)
после исправления на "негативный просмотр назад"выдает ошибку
Warning: preg_replace() [function.preg-replace]: Compilation failed: lookbehind assertion is not fixed length at offset 13 in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.php on line 3
(Добавление)
ЧОРД
разобрался
а как сделать позитив назад с неизвестной длинной? (Добавление)
это работает
без + в позитивном просмотре назад
тоесть только 1 пробел смотрит
неизвестную длину нельзя (Добавление)
и с строкой "bxc2xbeac c2xb wavol c2xb dddeoq xc2xbeacdd c2xb wavold c2xb dddeoq"
вообще не работает
меняет как миленький все
помогите разобраться
спс (Добавление)
сделал иначе
все работает
Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
LIME пишет:
только уберите карман к чему он
перечитывая в туалете домашнее чтиво (Джеффри Фридл - регулярные выражения) так и не напоролся на слово карман. Видимо используется в более серьёзных изданиях.
поэтому не могли бы вы пояснить смысл этого слова в данном контексте?
LIME
Отправлено: 22 Сентября, 2011 - 19:38:02
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
f111 в последней редакции регулярки
первый карман ($1) это (\s+)
он же и второй $2
но это совпадение в данном конкретном случае
Котеров "PHP5 в подлиннике" стр 416
f111
Отправлено: 22 Сентября, 2011 - 21:48:05
Новичок
Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
LIME , в моём РВ нет ни ($1) , ни (\s+), ни $2 (Добавление)
если вы про подшаблон в моём РВ, то почему бы ему и не быть, это не preg_match_all, так что совсем и не мешает
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.