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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> все простенько, но не работает, не пойму почему, посмотрите пожалуйста 
V
    Опции темы
burakov
Дата 12.8.2013, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день.

От данного кода 

Код

use strict;
use warnings;
use locale;

my $str = 'example1 example2';
while ($str =~ /(.+?)\s+(.+?)/sg) {
    print $1 ."\n";
    print $2 ."\n";
}



на принт идет

example1
e

вместо ожидаемого 

example1
example2


ПОЧЕМУ ТАК?!


спасибо.


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 12.8.2013, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Потому, что (.+?) - один или более любых символов минимальной длины (т.е., в Вашем выражении, всегда один символ).

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


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


Опытный
**


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

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



не понимаю
в первом же случае ищет правильно?
"один или более"

можете подсказать как нужно правильно написать?

чтобы во втором случае попадало в "найденное" все слово, а не первая буква

спасибо.




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Jimy
Дата 12.8.2013, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



/(.+?)\s+(.+?)$/
или
/(.+?)\s+(.+)/
PM   Вверх
burakov
Дата 12.8.2013, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а.. понял. ему нужна правая граница.
спасибо, большое.


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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