Подумайте, что вы имеете в виду, и переведите это на язык регулярных выражений. Как указал Гамбо, вы должны использовать [^:]
вместо .
; причина этого заключается в том, что вы ищете группы символов, которые не являются двоеточиями ([^:]
), а не группы абсолютно любых символов [1] (.
), в которых между ними есть двоеточия.
Каждый раз, когда вы обнаруживаете, что используете .
с квантификатором в регулярном выражении, остановитесь и спросите себя, действительно ли вы подразумеваете «любой символ» или вы могли бы выразить свое значение более четко (и получить более точные результаты), используя символ класс вместо.
(Нежадные квантификаторы (.*?
) также могут выполнять работу по получению правильных совпадений в подобных случаях, но классы символов по-прежнему являются более ясным выражением намерений для читателей-людей и повышают эффективность, избегая чрезмерного обратного отслеживания для машинных читателей). .)
[1] Ну, абсолютно любой символ, за исключением новых строк, зависящих от используемой вами реализации регулярного выражения.