我有一系列标签,我只需要删除那些具有以下结构的标签:
*:*:*
它们是机器标签,例如:flickr:event:132394而不是用户提交的标签。我应该使用什么正则表达式?
fields[i] = fields[i].replaceAll(" ,.*:.*", "");
感谢
答案 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+", "");