Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.10.2009, 14:08
cauchy вне форума Посмотреть профиль Отправить личное сообщение для cauchy Найти все сообщения от cauchy
  № 1  
Ответить с цитированием
cauchy
 
Аватар для cauchy

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
По умолчанию Регулярные выражения и русский язык

День добрый. Читаю регулярные выражения в as3.0 и столкнулся со след проблемой:
Код AS3:
//var example:RegExp = /\b(.){3}\b/g;
            var example:RegExp = /\b...\b/g;
            var target:String = "В этой строке есть два two слова по три tri буквы";
            var result:Array = new Array();
            while ((result = example.exec(target)) != null)
            {
                trace(result.index)
                trace(result);
            }
выводит:
Код AS3:
23
two
40
tri
Но русские слова длиной 3 символа не находит. При этом
Код AS3:
var example:RegExp = /д.а/g;
нормально находит "два"
В чём проблема? Он с кириллицей не до конца что-ли дружит?

Старый 22.10.2009, 14:28
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Символы, не являющиеся символами английского языка, не считаются словесными.
Цитата:
\b Соответствует положению между словесным символом и несловесным символом. Также соответствует началу или концу строки, если первый или последний символ в строке является словесным символом.

Старый 22.10.2009, 14:35
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, так, разве что:
Код AS3:
var example:RegExp = /(?<![\w\u0410-\u0451])[\w\u0410-\u0451]{3}(?![\w\u0410-\u0451])/g;
var target:String = "В этой строке есть два two слова по три tri буквы";
var result:Array = [];
trace(target.match(example));
while ((result = example.exec(target)) != null)
{
	trace(result.index)
	trace(result);
}
\w, \b и т.п. понимают только латиницу.
__________________
Hell is the possibility of sanity

Старый 22.10.2009, 15:35
cauchy вне форума Посмотреть профиль Отправить личное сообщение для cauchy Найти все сообщения от cauchy
  № 4  
Ответить с цитированием
cauchy
 
Аватар для cauchy

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Спасибо за ответы =)
wvxvw, оО. приду с инста, разберусь что там за выражение, так сразу не пойму (ну только догадываюсь).
А вообще пока сделал через \s...\s, только если ищешь несколько слов, то надо следить за индексами. И \s кажись ещё не только пробелы обозначает.

Старый 28.10.2009, 16:38
Exey вне форума Посмотреть профиль Отправить личное сообщение для Exey Найти все сообщения от Exey
  № 5  
Ответить с цитированием
Exey

Регистрация: Jun 2006
Сообщений: 78
А как быть с вики ссылкой в которой могут быть любые буквы(как минимум русские или английские)?
Код AS3:
var example:RegExp = /\[(\w+)\s(\w+)\]/g;
var target:String = "Ссылка [linkId Wikipedia], ссылка с русскими буквам[linkId Википедия]вот.";
var result:Array = [];
trace(target.match(example)); // [linkId Wikipedia]
while ((result = example.exec(target)) != null)
{
	trace(result.index)
	trace(result); 
}
Вот как видно кириллицу \w не ловит (
Есть ли универсальный способ? Или писать ИЛИ на каждый язык?

Старый 28.10.2009, 18:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS3:
var example:RegExp = /\[linkId.*?\]/g;

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.