从as3中的html标记中提取字符串

时间:2013-03-12 08:05:07

标签: regex actionscript-3

我的文字为

<p>Some text to extract</p>

有没有办法在as3中获取标签之间的文本。那只是“提取一些文字”。

我尝试过使用正则表达式

string.match(/<p>(.*?)<\/p>/g)

但它返回<p>个标签。

同样需要从以下文本中提取文本:

<caption><![CDATA[<p>Some text to extract.<span> -- Span text</span></p>]]></caption>

由于

2 个答案:

答案 0 :(得分:1)

这应该做:)

var reg:RegExp = /<p>(.*?)<\/p>/gi;

var str:String = "<p>Some text to extract</p>";

var raw:String = str.replace(reg, "$1");

trace("str", str);//str <p>Some text to extract</p>
trace("raw", raw);//raw Some text to extract

答案 1 :(得分:1)

如果你的标签是正确的,你可以尝试将其解析为xml。这将适用于您的示例:

var input:String = "<p>Some text to extract</p>";
var xml:XML = new XML(input);
trace(xml.text().toString()); // traces "Some text to extract"

修改

以下不是一个干净利落的答案......直到我花了一些时间搞乱它才能得到它。您可能不想接受这个作为答案,但我发布它,因为我设法得到结果......也许其他人可以使它更清洁。

我从未真正遇到过我感兴趣的节点(在本例中为

节点)具有文本内容和子节点(与我的xml中的CDATA相同)的情况。下面的代码经过一些随机猜测并检查api。每天学些新东西。 = B

var inputString:String = "<caption><![CDATA[<p>Some text to extract.<span> -- Span text</span></p>]]></caption>";

var xml:XML = new XML(inputString);

// oddly this seems to filter out the caption and CDATA tag...but the resulting output is all in 1 element still
trace(xml); // traces out: <p>Some text to extract.<span> -- Span text</span></p>

xml = new XML(xml.toString()); // turn this into xml again

trace(xml); // this looks better now...traces out the expected xml

trace("{"+ xml.p +"}"); // traces out blank for some reason...
trace(xml.span); // traces out the expected span tag contents: "-- Span text"

trace(xml.descendants()[0]); // traces out "Some text to extract." -got it!
trace(xml.descendants()[1]); // traces out "-- Span text"