2010-05-06 102 views
1

在下面的HTML:如何在Actionscript中使用正則表達式提取文本?

<a href="link1.php">1</a><a href="link2.php">2</a><a href="link3.php">3</a> 

我如何提取link1.php,link2.php,link3.php,並使用正則表達式他們推到一個數組? (有可能是N數量的文本<a>標籤)

[編輯]我知道這樣做的正則表達式是一樣的東西href="([^"])*"。但我想知道在Actionscript中如何去做這件事。具體來說,如何將它們推入到Actionscript中的數組

回答

1
var str:String = '<a href="link1.php">1</a><a href="link2.php">2</a><a href="link3.php">3</a>'; 
var result:Array = str.split(/<a[^>]*href="([^"]*)".*?>.*?<\/a>/); 
for (var i:int = 1; i < result.length; i += 2) { 
    trace(result[i]); // link1.php, link2.php, link3.php 
} 
0
<a[^>]*href="([^"]*)" 
0

正則表達式href="([^"])*"應該在大多數情況下工作。它會捕獲到\1。你可能不得不在循環中使用它,你可能不得不逃脫"

0

使用RegExp.exec()將返回一個可以通過索引訪問的對象,就像數組一樣。您可能會發現thisthis方便。

0

您確定要使用regex to parse html

如何像:

var anchors:String = '<a href="link1.php">1</a><a href="link2.php">2</a><a href="link3.php">3</a>'; 
var html = new XML('<p>' + anchors + '</p>'); 
var links:Array = []; 
for each(var a:XML in html.a) 
    links.push(String([email protected])); 
+0

**的文本可能是這樣的**:1可能有很多在這裏的文字2的這些鏈接有很多簡單的文本3因此令這間XML可能不是一個好主意? – Yeti 2010-05-06 09:56:57

+0

只要它是有效的xml,並且所有錨點標記都在頂層(不在另一個p或div內),這將會正常工作。如果錨標籤是嵌套的,你可以使用'html..a'而不是'html.a'裏面的'每個'來訪問所有的錨的後代。 – Amarghosh 2010-05-06 14:52:30