Regex et s'est échappé et sans échappement délimiteur

question relative à l' cette

J'ai une chaîne

a\;b\\;c;d

qui en Java ressemble

String s = "a\\;b\\\\;c;d"

J'ai besoin de le diviser par le point-virgule avec les règles suivantes:

  1. Si le point-virgule est précédé d'une barre oblique inverse, il ne doit pas être traitée comme séparateur (entre un et b).

  2. Si la barre oblique inverse est échappé et, par conséquent, n'échappe pas lui-même le point-virgule, point-virgule doit être de séparation (entre b et c).

Donc point-virgule doit être traitée comme séparateur si il est zéro ou un nombre de barres obliques avant.

Pour l'exemple ci-dessus, je veux recevoir les chaînes de caractères suivantes (double anti-slash pour compilateur java):

a\;b\\
c
d
Où est la double barre oblique inverse? Allé?
Je ne suis pas sûr que c'est une regex que vous voulez ici
Je suis également pas sûr si les expressions régulières sont le meilleur outil pour cette tâche. Mais vous avez choisi d'ignorer ma réponse ci-dessous; - /

OriginalL'auteur lstipakov | 2011-10-26