我需要找到在使用ActionScript 3(AS3)本文所有哈希标签内的所有哈希标签:查找文本
Lorem存有悲#sit_amet,consetetur sadipscing,sed的直径#,nonumy eirmod tempor #invidunt ut labore #et
这样做的好方法是什么? 谢谢 弗兰克
我需要找到在使用ActionScript 3(AS3)本文所有哈希标签内的所有哈希标签:查找文本
Lorem存有悲#sit_amet,consetetur sadipscing,sed的直径#,nonumy eirmod tempor #invidunt ut labore #et
这样做的好方法是什么? 谢谢 弗兰克
// your data:
var data:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";
// this regular expression will match most "normal" characters, add more as needed
// it will stop at the first whitespace or linebreak it hits
var regex:RegExp = /(\#[a-zA-Z0-9_%-]*)/g;
// this object will be used to store our results
var result:Object;
// now, we run the regex until it returns null,
// that means there's nothing more that matches
while (result = regex.exec(data)) {
// since we're not using groups or anything, all we want is the 0 in the object
trace(result[0]);
}
这将跟踪:
#sit_amet
#diam-nonumy
#invidunt
#et
实际上,您将整个比赛分组,并且您也会匹配单个哈希值。黑名单,而不是白名单也许会更容易,这是一个这样的正则表达式的开始:/#[^ \ s,] +/g – 2011-06-02 23:43:02
非常感谢! RegExp非常有趣。是否还有一种聪明的方法可以在文本之后从文本中删除找到的标签? – Frank 2011-06-03 00:45:31
我已用新的答案回答了此问题。 – TheDarkIn1978 2011-06-03 04:28:51
详细阐述“发现”,因为我不知道你想怎么处理它们。
那说,这可能会满足您的需求:
var str:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";
var array:Array = str.split("#");
你的阵列将包含以下 - 你可以用哈希预先考虑再次得到一个主题标签:
0:Lorem存有悲
1:sit_amet,consetetur sadipscing,sed的
2:直径-nonumy eirmod tempor
3:invidunt UT labore
4:等
如果这并不完全是你之后的话,那么你可能需要研究超出我的知识范围的正则表达式。
RE:有没有也 一个聪明的方式从文本 然后删除找到的标签?
你只是想删除实际的散列标签或散列标签及其标签的词吗?
这会从字符串中删除只哈希标签:
myString.replace(new RegExp("#", "g"), ""));
,而这将删除哈希标签,并从字符串的标签字:
myString.replace(new RegExp("#\\w*", "g"), "")
一个完整的教程和正则表达式的参考可以在这里找到:http://www.regular-expressions.info/
-
编辑:
它有点复杂,因为您要替换散列标签之间的部分字符串,而整个字符串本质上是整个散列标签之间。因此,如果不编写自己的字符串分析器,使用简单的正则表达式查找将不会很简单。
,但这样的事情可以工作:
var stringData:String = "#Lorem # et #ipsum dolor #sit_amet, consetetur sadipscing, sed #diam et #word# #_hello_# #-word# #word# #1a# #2WORD2# #2012# #word-3# #word_3# #word 3#";
trace(stringData.replace(new RegExp("#(.*?)#", "g"), ""));
我没有得到它的工作。我试图删除两个哈希字符之间的所有单词。这是我的AS3代码:'var mystring =“#Lorem#et #ipsum dolor #sit_amet,consetetur sadipscing,sed #diam et#word##_hello_##word##word#########2WORD2##2012# #word-3##word_3##word 3#“; // var regex:RegExp = /(\#[a-zA-Z0-9 _% - ] *#)/ g; var myresult:Object; // 功能removewords(){ 而(myresult = regex.exec(MyString的)){ 了mystring = mystring.replace(myresult [0], “”) } // 迹(MyString的) } // removewords() '看起来数字问题有问题。有任何想法吗? – Frank 2011-06-03 22:28:01
看到编辑答案 – TheDarkIn1978 2011-06-04 06:42:06
我从未听说过之前“主题标签”的,但一个快速搜索显示了大量的Twitter垃圾。因此,据说Twitter的文档应该至少有一个列表,这就是你需要开始你的“hashtag's”列表的地方,那么你可以在你编译列表后解析它们。 – 2011-06-02 22:56:35