正则表达式:如何从我的标签列表中删除机器标签

时间:2011-02-24 10:21:17

标签: java regex

我有一系列标签,我只需要删除那些具有以下结构的标签:

*:*:*

它们是机器标签,例如:flickr:event:132394而不是用户提交的标签。我应该使用什么正则表达式?

fields[i] = fields[i].replaceAll(" ,.*:.*", "");

感谢

2 个答案:

答案 0 :(得分:1)

fields[i] = fields[i].replaceAll("\\w+:\\w+:\\w+", "");

如果单词仅包含字母和数字。 为了更安全,你甚至可以说:

fields[i] = fields[i].replaceAll("[^:]+:[^:]+:[^:]+", "");

将删除所有不冒号的字符。 唯一的问题是最后一节。你怎么知道最后一句话已经完成了?那里没有冒号。例如,如果您希望删除所有不是空格的字符,请说:

fields[i] = fields[i].replaceAll("[^:]+:[^:]+:\\S+", "");

答案 1 :(得分:0)

这应该这样做:

fields[i] = fields[i].replaceAll("\\w+:\\w+:\\w+", "");

(请参阅my answer to your other question获取解释)

或者,如果您还需要处理逗号(也许是空格),请使用此版本:

fields[i] = fields[i].replaceAll("\\s*,?\\s*\\w+:\\w+:\\w+", "");