Автор Тема: Регулярные выражения, удаление после определённого символа...  (Прочитано 11623 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Плиз, помогите!
Суть траблззз:
есть строка, её запихиваем в переменную, после чего
1) необходимо удалить определённый символ, ну например "/", и всё, что после него.
2) надо из всей строки оставить только то, что находится между этими символами.
3) надо удалить всё, что следует 2 символ и всё, что до него...
Плиз, напишите примерчики, очень надо, лучше с комментариями:), хотя я думаю на примере и так разберусь.
ЗЫ. Не пишите что надо учить регулярные выражения, знаю, что надо, ну не понятливый я...
Помогите, а?
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Мда, сам не понял что написал:) в третьем пункте читай:
надо удалить всё, 2 символ и всё, что до него...
Ну к чему все это, лучше бы водки выпили...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
perldoc perlre  :))

Цитировать
1) необходимо удалить определённый символ, ну например "/", и всё, что после него.

s|(.*\\/)(.*?)|$1|
Цитировать

2) надо из всей строки оставить только то, что находится между этими символами.

s|.*\\/(.*?)\\/.*?|$1|
2B OR NOT 2B = FF

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Спасибо!
« Ответ #3 : 11 Апреля 2002, 01:19:45 »
Chs ты прям добрый гений ща пойду, попытаюсь сделать как ты написал:).
Ну к чему все это, лучше бы водки выпили...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Цитировать
s|(.*\\/)(.*?)|$1|

Chs, типа неправильно (.* там сожрала все по максимуму), а так лучше:
1. s/\\/.*//;

2. оставить то что между /../
s/[^\\/]*\\/([^\\/]*)\\/.*/$1/;
А если возможен вариант, что может такого и не оказаться, то
стоит просто вынести $1

if ($text=~m/\\/([^\\/]*)\\//){$res=$1;}
else {$res=\'\';}


Цитировать
3 надо удалить всё, 2 символ и всё, что до него...

а все равно непонятно, что ты хочешь, ты лучше кидай пример выражения до и после - легче будет.
Если просто надо удалить первых два символа, то так:
s/^..//;
;) только ты наверняка имел ввиду что-то другое
« Последнее редактирование: 11 Апреля 2002, 04:07:10 от Green Kakadu »
 в исканиях.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Цитировать
Chs, типа неправильно (.* там сожрала все по максимуму), а так лучше:

Я последнее вхождение "/" брал. Почему-то показалось, что так надо....
Из этих условий - все правильно.:))
2B OR NOT 2B = FF

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Цитировать
только ты наверняка имел ввиду что-то другое

Пример:
Есть строка
выапвраыыв/dsfdghdfffdfdgffdfd/то, что надо оставить
Ну к чему все это, лучше бы водки выпили...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
« Последнее редактирование: 11 Апреля 2002, 11:20:31 от Chs »
2B OR NOT 2B = FF

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Цитировать
Есть строка
выапвраыыв/dsfdghdfffdfdgffdfd/то, что надо оставить

или так:
s/.*\\///;
:)
2Chs у меня твой первый вариант ни в какую не хочет работать :( в $1 он сохраняет все выражение и результат замена сам на себя, правда, признаюсь ;) мой perl иногда подглючивает, а переставлять лень..
 в исканиях.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28