Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Регулярные Выражение (http://www.flasher.ru/forum/showthread.php?t=89862)

Nirth 25.12.2006 19:37

Регулярные Выражение
 
Кто тут крутой шарит?

Я вторые сутки пытаюсь понять как составить регулярное выражение, которое бы искало в тексте [acronim="eXtensible Markup Language"]XML[/acronim] и заменяло бы его на <a href="asfunction...........">XML</a>

Тоесть фактически ищем паттерн

[acronim="(сколько угодно символов, и какие угодно)"](сколько угодно и какие угодно)[/acronim]

Есть идеи?

etc 25.12.2006 19:52

/[acronim="(.*)"](.*)[\/acronim]/i

ммм? Не проверял, правда.

Nirth 25.12.2006 20:18

а что i на конце делает?

etc 25.12.2006 20:24

Игнорирование регистра — модификатор. Я не знаю, не смотрел, может в AS3 модификаторы в другом месте ставятся.

fishbounce 25.12.2006 21:26

еще надо в конце g поставить (/ig будет), чтобы все вхождения искал, а не первое.
вроде так:)

Nirth 25.12.2006 22:16

спасибо, завтра утром проверю =)

Nirth 27.12.2006 20:35

нифига не работает.

возвращает 1 (а в строке 2 акронима).

miramax 27.12.2006 21:30

Можно и регулярными выражениями.
Получится не менее трёх выражений.
В таких случаях я по-прежнему юзаю самые классные и а теперь и чрезвычайно быстрые методы split() и join().
Во-первых быстрее. Регулярные выражения работают в среднем раз в 5 медленнее.
Во-вторых, в регулярных выражениях есть какие-то то ли непонятки, то ли баги.

Вобщем разочаровали меня регулярные выражения в АС3.

Nirth 27.12.2006 23:01

Мирамакс, ты читал мой вопрос=)? как ты split\join ом сумеешь найти тэги с разным наполнением?

miramax 28.12.2006 00:10

Код:

var str:String = "Текст[anchor='xmlLink'] в тексте есть такие места'] text sdfs[/anchor]или такие']['  [anchor='xmlLink'] ещё одна ссылка[/anchor]здесь нет ссылки [anchor='xmlLdfdfink']и ещё какая-то ссылка[/anchor]";
var ar:Array;
var i:int = 1;
var a:Array
ar = str.split("[anchor='")
while(i < ar.length)
{
        a = ar[i].split("']")
        if(a.length>1) a.unshift(a.shift().concat("'>", a.shift()));
        a = a.join("']").split("[/anchor]")
        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)



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

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