|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
RegExp. Квантификаторы в группе просмотра.
Пытаюсь из текстового файла следующей структуры
(27074229, '151.00', '0.00', '0.00', 0), (6263225, '260.00', '158.00', '180.00', 0), (75838, '241.00', '0.00', '0.00', 0), (4678986, '124.00', '0.00', '0.00', 0) и так далее... var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler); urlLoader.load(new URLRequest("records.sql")); function urlLoader_completeHandler(event:Event):void { var str:String = urlLoader.data; var array:Array = str.match(/(?<=^\(\d+, ')\d+\.\d+/gmi); trace(array); // ни одного результата } т.е. указываю конкретное количество цифр, то находятся все нужные числа в блоках, где первое число содержит восемь знаков. Но так-как количество цифр не определено, то такой способ не подходит. И сам вопрос: можно ли, вообще, использовать квантификаторы, которые не определяют точное количество символов, в группах просмотра? Саму задачу я решил с помощью , но вопрос все же интересует. Последний раз редактировалось udaaff; 25.01.2010 в 18:34. |
|
|||||
Регистрация: Sep 2006
Адрес: Одесса
Сообщений: 11
|
|
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Т.е.
function urlLoader_completeHandler(event:Event):void { var str:String = urlLoader.data; var array:Array = []; var pattern:RegExp = /\(\d+, \'([^']+)\',[^)]+\)/g; var result:Object = pattern.exec(str); while (result) { array.push(result[1]); result = pattern.exec(str); } trace(array.length); } Или как-то по-другому можно еще выцепить значение из группы ([^']+)? Если такой способ имелся в виду, то он работает на порядок медленнее. |
|
|||||
Регистрация: Sep 2006
Адрес: Одесса
Сообщений: 11
|
мда, думал у флеша с этим проще...
ничего не придумал, кроме этого (и это похоже на изврат...): |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Тоже была мысль через replace... Религия не позволила
Хоть и похоже на изврат, но работает быстрее чем все предыдущие варианты. Но я так и не понял, почему не пашет /(?<=^\(\d+, ')\d+\.\d+/gmi |
|
|||||
Регистрация: Sep 2006
Адрес: Одесса
Сообщений: 11
|
"в отличие от заглядывания вперед, заглядывание назад может работать только с фиксированным числом проверяемых символов"
нашел в справках... |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Спасибо. А я искал, и ни черта не нашел.
|
|
|||||
Слушайте, а подскажите плиз, как лучше вот такое перевести в регулярку?
Или толковый ресурс по регуляркам... А то чё я как маленький? =)
__________________
...вселенская грусть |
|
|||||
Регистрация: Sep 2006
Адрес: Одесса
Сообщений: 11
|
можно пример строки и результат?
|
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Примеры строки и того, что в ней нужно найти, не помешали бы.
|
Часовой пояс GMT +4, время: 13:51. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|