Программирование > Регулярные выражения
Все, кроме выражения
Vladn:
Как сказать регулярному выражению фразу "Любая последовательность символов, в которой нет указанной последовательности"? Я знаю как сказать "Любая последовательность символов, в которой нет указанных символов" с помощью [^abcd].
Пример.
Пусть есть строчка
111111111111111111111111111111111111
нужно получить
111111222222222111111111111111111111
если сказать while ($a=~s/(.*?)1(.*?)/$1$d$2/) {}; (где $d=2) то получим следующее:
111111222222222222222222222111111111
если сказать while ($a=~s/([^()]*?)(1)/$1$d/) {}; то получим слдующее:
111111222211111111111111111111111111
Horez:
может, стоит таки разбить задачу на две? или с помощью оператора выбора
metton:
2Vladn
Формулируй вопрос точнее. [^abcd] вовсе не Любая последовательность символов, в которой нет указанных символов", а ЛЮБОЙ (КРОМЕ УКАЗАННЫХ) ОДИН СИМВОЛ. И так как ты это так определил, тем более не ясно что ты хочешь сказать этим: "Любая последовательность символов, в которой нет указанной последовательности". Эта формулировка скорее соответствует:
if(-1 == index($YourStr, $StringThatMustNotBeInYourStr)) {
# $YourStr соответствует критерию "Любая последовательность
# символов, в которой нет указанной последовательности"
}
Vladn:
metton
Читай внимательнее:
--- Цитировать ---Я знаю как сказать "Любая последовательность символов, в которой нет указанных символов" с помощью [^abcd].
--- Конец цитаты ---
И мне нужно не просто определить, есть ли указанная подпоследовательность в данной строке, а заменить текст между открывающим и закрывающим тегами, причем в этом тексте не должно быть другого закрывающего тега.
Я решил эту задачу, но решил некрасиво. Хотелось бы элегантного решения в одну строчку.
metton:
--- Цитировать ---И мне нужно не просто определить, есть ли указанная подпоследовательность в данной строке ...
--- Конец цитаты ---
Так ты определись, тебе нужно: "Любая последовательность символов, в которой нет указанных символов" или то, что я процитировал
И ещё, объясни мне логику вот этой фразы в общем: "И мне нужно не просто определить, есть ли указанная подпоследовательность в данной строке, а заменить текст между открывающим и закрывающим тегами". В первом предложении фигурирует строка и последовательность, которую нужно (или не нужно?! я уже запутался) найти в первой, а во втором предложении - некие тэги.
Я так подозреваю, при написании сообщения ты руководствовался правилом "2 пишем, 1 в уме" :rollingeyes:
Навигация
Перейти к полной версии