2010-10-14 7 views
0

J'ai essayé à peu près toutes les combinaisons possibles de RegexOptions.MultiLine et des barres obliques inversées afin de diviser un texte en utilisant \ comme un séparateur.Regex scinde une chaîne multiligne en utilisant

J'ai ce texte:

The quick brown 
Fox jumps\ 
Over the 
Lazy dog\ 

Je veux diviser en

The quick brown 
Fox jumps\ 

et

Over the 
Lazy dog\ 

Je l'ai essayé jusqu'à présent (avec un appel à la scission méthode de la Regex):

Regex regexSplit = new Regex(@"\\$", RegexOptions.Multiline); 
Regex regexSplit = new Regex(@"\$", RegexOptions.Multiline); 
Regex regexSplit = new Regex(@"\\$", RegexOptions.Singleline); 
Regex regexSplit = new Regex(@"\$", RegexOptions.Singleline); 
Regex regexSplit = new Regex(@"\\$"); 
Regex regexSplit = new Regex(@"\$"); 

Chaque fois que je récupère la chaîne d'origine complète. Pourriez-vous me donner un coup de main s'il vous plaît?

Merci d'avance.

EDIT: J'ai supprimé un espace supplémentaire. La raison pour laquelle je dois utiliser un Regex est parce qu'un \ pourrait être dans une correspondance entre "" ou "". C'est la raison pour laquelle je dois également faire une correspondance en fin de ligne.

Je dois ajouter que \\$ fonctionne lorsque je teste l'expression en utilisant RegexBuddy et le même texte d'entrée.

Répondre

1

Vous avez un espace supplémentaire dans "Fox sauts \", donc @"\\$" ne correspondra pas. Supprimez l'espace ou utilisez @"\\" pour diviser. Vous pouvez également vérifier les espaces @"\\\s*$".

Celui-ci devrait faire l'affaire:

var results = Regex.Split(subject, @"\\\s*$", RegexOptions.Multiline); 
+0

Merci, je retire l'espace supplémentaire. –

+0

Ça marche! Je dois ajouter que je ne suis pas convaincu qu'il y ait un espace entre le \ et la fin de la ligne dans ce cas. Merci pour votre aide de toute façon! –

1

Pourquoi ne pas cette simple Éclate une chaîne:

 string s = "The quick brown\r\nFox jumps\\\\r\n Over the\r\nLazy dog\\"; 
    s.Split(new string[] { "\\\r\n" }, StringSplitOptions.RemoveEmptyEntries); 
+1

Il pourrait être intéressé à scinder seulement si \ est à la fin de la ligne. – Diadistis

+0

@Diadistis: c'est vrai, j'ai édité mon message. –

+0

Voir ma mise à jour .. – Aliostad

Questions connexes