我有标签序列,我只需要删除具有以下结构的那些标签:如正则表达式:如何从我的标签列表中删除机器标签
*:*:*
它们是机器标签:Flickr的:事件:132394,而不是用户提交的标签。我应该使用什么正则表达式?
fields[i] = fields[i].replaceAll(" ,.*:.*", "");
感谢
我有标签序列,我只需要删除具有以下结构的那些标签:如正则表达式:如何从我的标签列表中删除机器标签
*:*:*
它们是机器标签:Flickr的:事件:132394,而不是用户提交的标签。我应该使用什么正则表达式?
fields[i] = fields[i].replaceAll(" ,.*:.*", "");
感谢
fields[i] = fields[i].replaceAll("\\w+:\\w+:\\w+", "");
如果单词只包含字母和数字。 为了更安全,你甚至可以说:
fields[i] = fields[i].replaceAll("[^:]+:[^:]+:[^:]+", "");
,将删除不冒号的所有字符。 唯一的问题是最后一节。你怎么知道最后一个字是完成的?那里没有冒号。例如,如果你想删除不空白中的所有字符,说:
fields[i] = fields[i].replaceAll("[^:]+:[^:]+:\\S+", "");
你的第二个版本也符合这个:“一些:标记一些:othertag一些:thirdtag”。 '[^:] +'是贪婪的方式! – 2011-02-24 10:32:25
这应做到:
fields[i] = fields[i].replaceAll("\\w+:\\w+:\\w+", "");
(具体说明见my answer to your other question)
或者,如果您还需要处理用逗号(也许是空白) ,使用此版本:
fields[i] = fields[i].replaceAll("\\s*,?\\s*\\w+:\\w+:\\w+", "");
的可能的复制http://stackoverflow.com/questions/5103251/regular-expressions-all-words-after-my - 现在已经不存在了 – adarshr 2011-02-24 10:23:55
为什么你的正则表达式中有一个逗号?它是格式的一部分吗? – reef 2011-02-24 10:28:26
你可以尝试字段[i] .replaceAll(“。*:”,“”)也许。 – reef 2011-02-24 10:29:15