Премахнете хипервръзка, етикети за котва от текст в actionscript 3

Как мога да премахна всички anchor тагове от текст. Ако имам низ като:

< a href="/bga.aspx">aaaaa</a>
<b href="/bg#">bbbbb</b>
tttttttt</a>
<a href = "#">ccccc< /a >
<a href="/bgsomething.html">ddddd</a>

как мога да премахна всички връзки, така че крайният резултат да е:

aaaaa
<b href="/bg#">bbbbb</b>
tttttttt</a>
ccccc
ddddd

Трябва да го направя в actionscript 3.

Благодаря


person gandra404    schedule 14.05.2014    source източник
comment
Задължителна връзка. Пример, който отговаря на нуждите на вашето изискване: <\s*a\b.*?>(.*?)<\s*/a\s*>. Документация за AS3: String.replace(RegExp, String);. И накрая: по-добър начин за анализиране на DOM в AS3. Наслади се ;)   -  person Sam    schedule 14.05.2014


Отговори (1)


Ето разширен отговор въз основа на моя коментар, по заявка.


На първо място, "регулярните" изрази не трябва да се използва за анализиране на HTML, защото HTML не е "обикновен" език. Това може да се види във вашия пример, където множество странности могат да се използват в тагове за котва и всички те пак ще бъдат анализирани като връзки от браузър.

Но <\s*a\b.*?>(.*?)<\s*/a\s*> е израз, който технически отговаря на вашите изисквания, така че ако вашият случай на употреба е „контролиран“, тогава отидете за него. Ето разширено обяснение:

<\s*   (?# match < followed by 0+ whitespace)
a\b    (?# match a followed by a word boundary)
.*?>   (?# lazily match 0+ characters followed by >)
(.*?)  (?# lazily capture 0+ characters into group #1)
<\s*   (?# match < followed by 0+ whitespace)
/a     (?# match /a literally)
\s*>   (?# match 0+ whitespace characters followed by >)

Бележки:

  • (...) създава група за улавяне, която може да бъде рефериран от \1 или $1 във вашия заместващ низ.
  • Казах, че това работи за случаи на "контролирана" употреба, но какво означава това? Това ще се провали при връзка като <a href="/bgfoo>bar">fail</a>, която технически е невалиден URL адрес, но повечето програми, четещи HTML, ще се справят това добре.
  • Документация за AS3: String.replace(RegExp, String);
  • Затова казах, че е лоша идея да се използва регулярен израз за HTML, но какво използвате вместо това?
person Sam    schedule 26.05.2014