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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск слов начинающихся с $ исключая комментарии. 
:(
    Опции темы
TChainik
Дата 10.10.2007, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!

Подскажите, пожалуйста, как найти в тексте все слова
начинающиеся с $ кроме слова $result и текста
в комментариях типа // $бла $бла $бла
и /* $бла $бла $бла */

сделал регексп для текста без учета комментариев, вот:

\$(?!result)\w+

Заранее, спасибо.
PM MAIL   Вверх
tishaishii
Дата 10.10.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



Код
$/=undef;
$str=<DATA>;
$str=~s{//[^\r\n]*|/\*.*?\*/}{push @arr, $&; +'@@'}geos;
print $&, "\n" while $str=~m{\$\w+}gcs;
$str=~s{\Q@@\E}{+shift @arr}geos;
print '-' x 10, "\n";
print $str;

__END__
$a dsfds $b //$c
/*
    $d
*/
$e

PM MAIL ICQ Skype   Вверх
amg
Дата 10.10.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Можно сначала удалить все комментарии:
Код

s%[ \t]*//.*?\n?%%g;
s%/\*([^*]|\*(?!/))*\*/[ \t]*\n?%%g;


Опоздал...


Это сообщение отредактировал(а) amg - 10.10.2007, 10:27
PM MAIL   Вверх
tishaishii
Дата 10.10.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



А можно ничего не удалять.
Код
$/=undef;
$str=<DATA>;
my($old, $new, $s);

while($str=~m{//[^\r\n]*|/\*.*?\*/}gcs) {
    $new=pos $str;
    $s=substr $str, $old, $new-$old-length $&;
    $old=$new;
    print $&, "\n" while $s=~m{\$\w+}gcs;
}
$s=substr $str, $old;
print $&, "\n" while $s=~m{\$\w+}gcs;

__END__
$a dsfds $b //$c
/*
    $d
*/
$e

PM MAIL ICQ Skype   Вверх
TChainik
Дата 11.10.2007, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большое всем ответившим.

А скажите пожалуйста, приведенные конструкции можно оформить одним регекспом?
PM MAIL   Вверх
shamber
Дата 11.10.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



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


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

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


 




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


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

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