Можно ли определить регулярное выражение, которое будет соответствовать любому символу, кроме определенного определенного символа или набора символов?
В принципе, я хотел разбить строку запятой (,) или точкой с запятой (;). Поэтому я думал сделать это с регулярным выражением, которое соответствовало бы всем, пока не столкнулось с запятой или точкой с запятой.
[^,;]+
Вы не указали используемую вами реализацию регулярного выражения. Большинство из них имеют метод Split
, который принимает разделители и разделяет их. Возможно, вы захотите использовать этот класс с "нормальным" (без ^
) символьным классом:
[,;]+
Использовать классы символов. Класс символов, начинающийся с каретки, будет соответствовать чему-либо не в классе.
[^,;]
используйте класс отрицательных символов:
[^,;]+
Используйте это:
([^,;]*[,;])*
(?:([^,;]*)(?:[^,;]|$))
' (PCRE с не захватывающими скобками). Варианты запятой или точки с запятой после поля или конца записи, заставляют вещи работать лучше. Также подумайте, разрешены ли пустые поля.