Просмотр полной версии : Регулярные Выражение
Кто тут крутой шарит?
Я вторые сутки пытаюсь понять как составить регулярное выражение, которое бы искало в тексте XML и заменяло бы его на <a href="asfunction...........">XML</a>
Тоесть фактически ищем паттерн
(сколько угодно и какие угодно)
Есть идеи?
/[acronim="(.*)"](.*)[\/acronim]/i
ммм? Не проверял, правда.
Игнорирование регистра — модификатор. Я не знаю, не смотрел, может в AS3 модификаторы в другом месте ставятся.
fishbounce
25.12.2006, 21:26
еще надо в конце g поставить (/ig будет), чтобы все вхождения искал, а не первое.
вроде так:)
спасибо, завтра утром проверю =)
нифига не работает.
возвращает 1 (а в строке 2 акронима).
Можно и регулярными выражениями.
Получится не менее трёх выражений.
В таких случаях я по-прежнему юзаю самые классные и а теперь и чрезвычайно быстрые методы split() и join().
Во-первых быстрее. Регулярные выражения работают в среднем раз в 5 медленнее.
Во-вторых, в регулярных выражениях есть какие-то то ли непонятки, то ли баги.
Вобщем разочаровали меня регулярные выражения в АС3.
Мирамакс, ты читал мой вопрос=)? как ты split\join ом сумеешь найти тэги с разным наполнением?
var str:String = "Текст в тексте есть такие места'] text sdfsили такие'][' ещё одна ссылказдесь нет ссылки и ещё какая-то ссылка";
var ar:Array;
var i:int = 1;
var a:Array
ar = str.split(".split("']")
if(a.length>1) a.unshift(a.shift().concat("'>", a.shift()));
a = a.join("']").split("")
if(a.length>1) a.unshift(a.shift().concat("</a>", a.shift()));
ar[i] = a.join("");
i+=1
}
str = ar.join("<a href='asfunction:")
trace(str)
Тебе не кажется что заменять все символы ] не нужно =)? вдруг они используются еще для каких либо целей, а нужно заменять, только если они являются частью чего либо.
Тебе не кажется что заменять все символы ] не нужно =)? вдруг они используются еще для каких либо целей, а нужно заменять, только если они являются частью чего либо.Нет, здесь заменяется то что нужно. :)
Nirth, я завтра поковыряюсь с регуляркой, напишу тогда. То, что я написал ранее было написано из головы и не проверялось.
fishbounce
28.12.2006, 01:49
нифига не работает.
возвращает 1 (а в строке 2 акронима).
А ты /g ставил в конце? вроде работает все...
не знаю на счет АС3, но хороший мануал по регулярным выражениям есть на пхпклубе.
если не читал (сомневаюсь :) ) посмотри.
нифига не работает.
возвращает 1 (а в строке 2 акронима).
это зависит не от выражения, а от функции, которая его использует.
может она прекращает работу после первого вхождения?
я ставил g и i и еще какой то указатесь, пользвался RegExp.exec(), и string.search() =) да я тупой в регулярных, я не скрываю, уже больше года (с альфа флекса) пытаюсь понять че в них =)
Dendroid
29.12.2006, 10:50
А я вот очень люблю регулярные выражения во флэше, и использую их даже там, где не надо... :)
var line = 'XML text text text text text text \ntext another XML';
var reg = /\[acronim=("[^"]*")\]([^\[]*)\[\/acronim\]/g;
var result = line.replace(reg,"<a href=asfunction:$1>$2</a>");
trace(result);
(не обрабатывает вхождения кавычек и квадратных скобок внутри искомых строк - их лучше "выкусывать" отдельным регулярным выражением)
У меня два вхождения числа 666 под аватарой! :eek:
У меня два вхождения числа 666 под аватарой! :eek:
Одно неверно определилось :))
Nirth, сорри, НГ на носу, какой флеш… :D
(не обрабатывает вхождения кавычек и квадратных скобок внутри искомых строк - их лучше "выкусывать" отдельным регулярным выражением)
Если такое разрешить, то сплит-джоинтами ещё проще будет и быстрее :
var line:String = 'XML text text text text text text \ntext another XML';
var result:String = line.split('').join(">").split('').join('</a>')
trace(result);;
Юзать String.replace() - будет лаконичнее, но этот метод слишком медленный, если надо обработать несколько тысяч символов.
Но есть множество задач, где без регулярных выражений туго :)
У меня два вхождения числа 666 под аватарой!
Срочно отпишись в этом топике ! :)
Во-первых быстрее. Регулярные выражения работают в среднем раз в 5 медленнее.
Вобщем разочаровали меня регулярные выражения в АС3.
просто их 2 вида + POSIX
DFS оч. быстрые, NFS - смотря как использовать но медленней
как они реализованы в АС я не знаю то НФС cкорее всего (DFS обычно в текстовиках)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.