Регулярные выражения: как удалить машинные теги из моего списка тегов - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть последовательность тегов, и мне нужно только удалить те теги, имеющие следующую структуру:

*:*:*

Это машинные теги, такие как: flickr: event: 132394, а не пользовательские теги. Какое регулярное выражение я должен использовать?

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

спасибо

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

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

, если слова состоят только из букв и цифр.Чтобы быть более безопасным, вы даже можете сказать:

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

, который удалит все символы, не являющиеся двоеточиями.Единственная проблема с последним разделом.Как вы можете знать, что последнее слово закончено?Там нет толстой кишки там.Например, если вы хотите удалить все символы, не являющиеся пробелами, скажите:

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

0 голосов
/ 24 февраля 2011

Это должно сделать это:

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

(см. мой ответ на ваш другой вопрос для объяснения)

Или, если вам также нужно иметь дело с запятыми (и, возможно, пробелами), используйте эту версию:

fields[i] = fields[i].replaceAll("\\s*,?\\s*\\w+:\\w+:\\w+", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...