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

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

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
По умолчанию RegExp - выделение слов ограниченных пробелами

как с помощью RegExp - получить массив слов?
например есть строка вида:
Цитата:
do param1 (12.3>=number) false
нужно получить массив
Цитата:
[do,param1,12.3,>=,number,false]
т.е. выделить слова:
- ограниченные пробелами,
- ограниченные справа знаками )
- ограниченные слева знаком (
- ограниченные с любой стороны знаком <,>,=,!
- сами знаки <,>,==,!=,<=,>=, причем <= выделяется как <=, а не <,=.
Не дружу я пока с этими регулярками, голову уже сломал совсем
ну или хотя бы как простейший ignoreWhite сделать? типа сократить все пробелы длиной больше 1 до 1, и удалить пробелы в конце и начале?
__________________
Отряд Котовскага

Старый 10.02.2010, 18:07
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Пробелы))
Код AS3:
private static const DOUBLE_SPACE_RX:RegExp = /\s+/g;
private static const ENTER_SPACE_RX :RegExp = /^\s+/g;
...
_text = _text.replace(DOUBLE_SPACE_RX, " ");
_text = _text.replace(ENTER_SPACE_RX, "");
Добавлено через 1 час 25 минут
Для первого выражения подойдет такой ход
Код:
([\w\d\.]+|[\>\<\=\-\+\*\!\/]+)
Но не знаю, как он отразится на других Ваших выражениях))
__________________
Reality.getBounds(this);

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
var re:RegExp = /\s+/g;
trace("          a     b   c      ".replace(re, " ")); // a b c
А остальное - похоже хочешь написать эвалюатор все-таки Делать это регекспом занятие неблагодарное. Лучше switch и по буковке проверять, иначе умаешься, да и нееффективно будет.
Это, выражаясь умными словами Regexp - это не тюринг-полный язык, поэтому некоторые задачи решать с его помощью сложно вплоть до невозможно.

@Wolsh
\w включает в себя цифры тоже
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 10.02.2010 в 20:02.
Старый 10.02.2010, 20:57
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
))) Точно. Ну можно сократить вот так -
Код:
([\w\.]+|[><!=\-+*/]+)
Только не знаю Ваше отношение к точке, разделяющей слова, вроде this.parent )))
__________________
Reality.getBounds(this);

Старый 11.02.2010, 08:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Точка не разделитель.

Старый 11.02.2010, 09:47
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от wvxvw Посмотреть сообщение
похоже хочешь написать эвалюатор все-таки
Да написал уже) кроме того есть уже парсер xml, теперь вот еще хочу ECMAScript - подобный парсер одолеть, тут без regexp сложновато, просто я до вчерашнего дня регулярки вообще не знал и не использовал нигде)
а насчёт тюринг-полноты.. Сами регэкспы неполны, но Regexp+ replace/match итп, очень даже..

etc,Wolsh,wvxvw - спасибо, буду втыкать дальше..

Добавлено через 19 минут
Цитата:
Сообщение от Wolsh Посмотреть сообщение
))) Точно. Ну можно сократить вот так -
Код:
([\w\.]+|[><!=\-+*/]+)
Только не знаю Ваше отношение к точке, разделяющей слова, вроде this.parent )))
this.parent не будет)
тут
Код:
([\w\.]+|[><!=\-+*/]+)
у вас ошибка или я что-то недопонял?

ЗЫ.. понял) нужно было экранировать /, ну мне эти операции (-,+,*,/) пока ни к чему, нужны только отношения.. причем надо чтоб "-80" - одной строкой
В общем получилось так:
Код AS3:
private static const FULL_RX :RegExp = /([\w\.\-]+|[><!=]+)/g;
..
		static private function toCommand(str:String):Array
		{			
			var arr:Array = str.match(FULL_RX);
			trace("arr : " + arr);
			return arr;
		}
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 11.02.2010 в 10:12.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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