Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Регулярные выражения и русский язык (http://www.flasher.ru/forum/showthread.php?t=131528)

cauchy 22.10.2009 14:08

Регулярные выражения и русский язык
 
День добрый. Читаю регулярные выражения в 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;

нормально находит "два"
В чём проблема? Он с кириллицей не до конца что-ли дружит?

udaaff 22.10.2009 14:28

Символы, не являющиеся символами английского языка, не считаются словесными.
Цитата:

\b Соответствует положению между словесным символом и несловесным символом. Также соответствует началу или концу строки, если первый или последний символ в строке является словесным символом.

wvxvw 22.10.2009 14:35

Ну, так, разве что:
Код 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 и т.п. понимают только латиницу.

cauchy 22.10.2009 15:35

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

Exey 28.10.2009 16:38

А как быть с вики ссылкой в которой могут быть любые буквы(как минимум русские или английские)?
Код 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 не ловит (
Есть ли универсальный способ? Или писать ИЛИ на каждый язык?

udaaff 28.10.2009 18:03

Код AS3:

var example:RegExp = /\[linkId.*?\]/g;



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

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