Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить регулярными выражениями угловые скобки 
:(
    Опции темы
Suppir
Дата 24.5.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



День добрый!

Есть строки вида:

<какой-то текст с <угловыми скобками>>
<какой-то текст с <угловыми скобками>  другой текст>

Возможно ли одним регулярным выражением привести такие строки к виду:
<какой-то текст с угловыми скобками>
<какой-то текст с угловыми скобками  другой текст>

То есть удалить все внутренние угловые скобки, но не удалять внешние угловые скобки.
PM MAIL   Вверх
Suppir
Дата 24.5.2013, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Пока что только такое придумал:

Код

text = Regex.Replace(text, "^<(.+?)<(.+?)>(.*?)>", "<$1$2$3>", RegexOptions.Multiline);

код на c#.

Но код работает, только если одна пара угловых скобок находится внутри. Если две пары или вложенные, то уже не работает.
PM MAIL   Вверх
ginnie
Дата 24.5.2013, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Предложу свой вариант:

Код

my $str = '<какой-то текст с <углов<ыми> скобками>  другой текст> и <еще <о<д>>ин>';
print $str, $/;
my $counter = 0;
$str =~ s/([<>])/sub {($_[0] eq '<' ? $counter++ : --$counter) ? '' : $_[0]}->($1)/eg;
print $str, $/;


Это сообщение отредактировал(а) ginnie - 24.5.2013, 16:41


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Arantir
Дата 24.5.2013, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Код

text = "<" + Regex.Replace(text, "[<>]", "", RegexOptions.Multiline) + ">";
?


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Suppir
Дата 2.6.2013, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Спасибо, оказалось, что моего варианта хватило.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.