I am looking for a pattern that matches everything until the first occurrence of a specific character, say a ";" – a semicolon.
I wrote this:
/^(.*);/
But it actually matches everything (including the semicolon) until the last occurrence of a semicolon.
Best Answer
You need
The
[^;]
is a character class, it matches everything but a semicolon.^ (start of line anchor) is added to the beginning of the regex so only the first match on each line is captured. This may or may not be required, depending on whether possible subsequent matches are desired.
To cite the
perlre
manpage:This should work in most regex dialects.
Note: The pattern will match everything up to the first semicolon, but excluding the semicolon. Also, it will match the whole line if there is no semicolon. If you want the semicolon included in the match, add a semicolon at the end of the pattern.