Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Помогите с регэкспом
цитата
29/09/07 в 21:21
 Kn
Не понимаю в чем пробелема, уже час бьюсь

$desc="slovo [vor~var] slovo [ver] slovo ";
$desc=~s/(\[[A-z, ,~]+\])//;

идея такая что должно замениться только то что в первых скобках
а у меня почему то заменятся все что между первой скобкой и последней

с фигурными скобками работает

$desc="slovo {vor~var} slovo {ver} slovo ";
$desc=~s/(\{[A-z, ,~]+\})//;
цитата
29/09/07 в 21:39
 lalex
Использую нежадный плюс (Ungreedy Matching)
цитата
29/09/07 в 21:45
 sotiris
уже ответили, блин, пока логинился, опередилиicon_smile.gif

на счет 2й: похоже скобка ] попадает в диапазон A-z, иначе как объяснить такое:
$desc1="aaa}bbb";
$desc2="aaa]bbb";
$desc1=~s/([A-z]+)//;
$desc2=~s/([A-z]+)//;
print "desc1=$desc1\n";
print "desc2=$desc2\n";
выводит:
desc1=}bbb
desc2=

хотя может туплю, поправьте если не правicon_smile.gif
цитата
29/09/07 в 21:45
 Kn
Спасибо админам Амхоста ))
все решилось
оказалось дело в [A-z] в этот диапозон входят []
цитата
29/09/07 в 21:47
 sotiris
гы, ну как я и говорилicon_smile.gif
цитата
29/09/07 в 21:49
 lalex
Поддерживаю. Правильный вариант: [a-zA-Z]. И плюс можно оставить как был.
цитата
29/09/07 в 22:00
 Kn
а тогда в догонку
принципиальная разница есть между [A-Z],[a-z] i [a-zA-Z]
цитата
29/09/07 в 22:10
 lalex
Разница в том, что [A-Z] матчит заглавные буквы, а [a-z] - прописные. [A-Za-z] - и те, и другие. Если использовать флаг /i при матче, что все три класса буков будут одинаковыми, т.е. различия между ними не будет.

У тебя проблема была в том, чтом в ASCII таблице символов между буквами Z и a находится 6 лишних сиволов, в том числе квадратные скобки.
цитата
29/09/07 в 22:23
 Kn
это я все понял)
теперь понял что и разницы нету


Эта страница в полной версии