It's working just as it's supposed to -- you haven't limited it to the first occurrence of the colon, so it matches the first string up to the first colon, then matches the next string up to second colon, and so forth.
If you want to apply it from the beginning of the paragraph to the first colon you can use ^.+?:, but it really would be simpler, and more efficient, to use a regular nested style through 1 colon.
Very good catch, Peter! (I find a good way to "debug" such issues is to temporarily add a highly visible element to the character style, such as a thick, brightly colored underline. But in this case it would probably not have helped.)
Thanks, Peter! I'm so used to the way grep works outside of InDesign that I forgot it would look for multiple instances within the paragraph. Technically, I did limit it to the first occurrence by using the question mark after the plus. (If you use any of the shortest match options in the drop-down menu that's what you get.)
But anchoring it to the beginning of the line with ^ did the trick.
No, GREP styles match ALL occurrences of the pattern, unless you limit them in some way. If you were using a GREP style to highlight your brand name (a common use), and the name appears three times in the paragraph, you expect three matches.
You could limit this to the first string ending in a colon also by using a negative look-behind for a colon.
Yes, that is correct, Peter. I spoke too soon while thinking of a different context.
I had been using a look-behind as my work around before. It does work well, but with more complexity.