Автор Тема: Вырезка текста  (Прочитано 13629 раз)

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

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Вырезка текста
« Ответ #15 : 27 Августа 2003, 23:26:28 »
2Alone
Кто-то утверждает обратное?
 BlueJacking среди нас

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вырезка текста
« Ответ #16 : 28 Августа 2003, 09:53:36 »
упс :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Вырезка текста
« Ответ #17 : 29 Августа 2003, 12:42:50 »
metton
Тогда вопрос? что ты понимаешь под локальным набором символов?

цитирую из любимой книги:

\\w - совпадает с символами, определяющими класс "слово" (алфавитно-цифровые плюс "_")

. - совпадение с любым символом, кроме конца строки (\\n)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #18 : 29 Августа 2003, 12:49:15 »
man locale
The documentations is your friend

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вырезка текста
« Ответ #19 : 29 Августа 2003, 12:52:47 »
Цитировать
Phoinix:
Насколько я понял в класс \\w входят только латинские символы, цифры и _

Не всегда, т.к. это зависит от реализации и настроек. Живой пример для Перл:

1)
print \'!\' if \'йцук\' =~ /\\w/;

2)
use locale;
print \'!\' if \'йцук\' =~ /\\w/;

дают разные результаты.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Вырезка текста
« Ответ #20 : 29 Августа 2003, 13:34:47 »
mike
Вот только я не пойму, что при use locale он делает с пробелами?

Он вырезает текст с пробелами, но при этом оставляет вместо текста один пробел, при наличии в тексте нескольких подряд пробелов он заменяет их, опять же, на один?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #21 : 29 Августа 2003, 13:40:39 »
Пробелы они и африке пробелы(так же как табы и переводы строк) только черные. use locale влияет на выбор charmaps.
The documentations is your friend

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #22 : 10 Сентября 2003, 14:18:46 »
Цитировать
NeoNox:
Пробелы они и африке пробелы


Извините, но это не совсем так...
Например символ с ASCII кодом 160 (chr(160)) при кодировке cp1251 даст пробельный символ. И более того метасимвол \'\\s\' отловит этот символ как положенно. При других кодировках этого не происходит.

ps: Microsoft программы этот символ очень любят. (например Excel)
0 OK, 0:1

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Вырезка текста
« Ответ #23 : 11 Сентября 2003, 13:45:57 »
Цитировать
ondr:
Извините, но это не совсем так...

Читаем ман по регам:
\\s Пропуск. в системах, ограничивающихся поддержкаой ASCII, часто эквивалентно [ \\f\\n\\r\\t\\v], В системах с подержкой Юникода также часто включает управлящий символ "следующей строки" U+0085, а иногда свойство  \\p{Z}

\\p{Z} — \\p{Separator} — символы, выполняющие функции разделителей, но не имеющие собственного визуального представления (разнообразные пробелы и т.д.)
\\p{Zs} — \\p{space separator} — различные типы пробелов (обычный пробел, наразрывный пробел, и пробелы фиксированной ширины)

Ман по РНР:
By default, a whitespace character is any character that the C library function isspace() recognizes, though it is possible to compile PCRE with alternative character type tables.
(Свободный перевод, извините за качество
По-умолчанию пробелом считается любой символ, который распознает библиотечная С-функция isspace(), хотя возможно скомпилировать PCRE с альтернативным набором символов)
На С не писал, не знаю. может кто просветит, какие символы распознает эта функция?

Оттуда же:
\\s any whitespace character
any переводится любой
работа в Украине

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Вырезка текста
« Ответ #24 : 11 Сентября 2003, 13:47:40 »
Цитировать
metton:
/.*?/

Согласен. Ищет минимальное совпадение.
работа в Украине

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #25 : 11 Сентября 2003, 13:58:56 »
Цитировать
Yukko:
Оттуда же:
\\s any whitespace character
any переводится любой


Все правильно. Только речь не об этом. Читай внимательнее посты.
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #26 : 11 Сентября 2003, 14:05:24 »
Цитировать
ondr:
Извините, но это не совсем так...

Можно и на ты.
Все правильно. Только речь не об этом. Читай внимательнее посты. ;)
The documentations is your friend

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Вырезка текста
« Ответ #27 : 11 Сентября 2003, 14:26:23 »
NeoNox ondr

[OFF]Что-то тема раздулась и ушла не в ту степь....[/OFF]

В конце был поднят вопрос как прицепить к классу \\w кириллические символы, дабы не рисовать конструкцию - [а-яА-ЯёЁ\\w]. Когда я начал проверять это дело, то увидел что у меня теряются пробелы, которые мне тоже нужны, и соответственно задал насчет этого вопрос, но как сказал NeoNox:
Цитировать
Пробелы они и африке пробелы

И действительно, проблема выскочила из-за того, что результат обработки текста я выводил в браузер, а он по-определению не печатает просто так больше двух пробелов, я просто по-запарке про это забыл...

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Вырезка текста
« Ответ #28 : 11 Сентября 2003, 14:32:25 »
Так замени пробелы на  
работа в Украине

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Вырезка текста
« Ответ #29 : 11 Сентября 2003, 14:42:59 »
s/ {2}/  /g - лучше так, чередуя
0 OK, 0:1

 

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