Is it possible to define a regex which will match every character except a certain defined character or set of characters?
Basically, I wanted to split a string by either comma (,) or semi-colon (;). So I was thinking of doing it with a regex which would match everything until it encountered a comma or a semi-colon.
[^,;]+
You haven't specified the regex implementation you are using. Most of them have a Split
method that takes delimiters and split by them. You might want to use that one with a "normal" (without ^
) character class:
[,;]+
Use character classes. A character class beginning with caret will match anything not in the class.
[^,;]
Use this:
([^,;]*[,;])*
(?:([^,;]*)(?:[^,;]|$))
' (PCRE with non-capturing parentheses). The alternatives of a comma or semi-colon after the field, or end of record, makes things work better. Also consider whether empty fields are allowed.
Success story sharing