web-dev-qa-db-fra.com

Regex qui correspond à une nouvelle ligne (\ n) en C #

OK, celui-ci me rend dingue .... J'ai une chaîne qui se forme ainsi:

var newContent = string.Format("({0})\n{1}", stripped_content, reply)

newContent s'affichera comme:
(ancien texte)
nouveau texte

J'ai besoin d'une expression régulière qui supprime le texte entre parenthèses avec la parenthèse incluse ET le caractère de nouvelle ligne.

Le mieux que je puisse trouver est:

const string  regex = @"^(\(.*\)\s)?(?<capture>.*)";
var match= Regex.Match(original_content, regex);
var stripped_content = match.Groups["capture"].Value;

Cela fonctionne, mais je veux spécifiquement faire correspondre la nouvelle ligne (\n), pas de blanc (\s) Remplacement \s avec \n\\n ou \\\n ne marche pas.

S'il vous plaît, aidez-moi à garder ma raison!

EDIT: un exemple:

public string Reply(string old,string neww)
        {
            const string  regex = @"^(\(.*\)\s)?(?<capture>.*)";
            var match= Regex.Match(old, regex);
            var stripped_content = match.Groups["capture"].Value;
            var result= string.Format("({0})\n{1}", stripped_content, neww);
            return result;
        }

Reply("(messageOne)\nmessageTwo","messageThree") returns :
(messageTwo)
messageThree
32
Dabblernl

Si vous spécifiez RegexOptions.Multiline, vous pouvez utiliser ^ et $ pour faire correspondre respectivement le début et la fin d'une ligne.

Si vous ne souhaitez pas utiliser cette option, n'oubliez pas qu'une nouvelle ligne peut être l'une des suivantes: \n, \r, \r\n, donc au lieu de chercher uniquement \n, vous devriez peut-être utiliser quelque chose comme: [\n\r]+, ou plus exactement: (\n|\r|\r\n).

64
Jon Grant

En fait, cela fonctionne, mais avec l'option opposée, c'est-à-dire.

 RegexOptions.Singleline
19
Saulius

Vous allez probablement avoir un\r avant votre\n. Essayez de remplacer le\s par (\ r\n).

4
JP Alioto

Je pense que je suis peut-être un peu en retard à la fête, mais j'espère toujours que cela aidera.

J'avais besoin d'obtenir plusieurs jetons entre deux signes de hachage.

Exemple i/p:

## token1 ##
## token2 ##
## token3_a
token3_b
token3_c ##

Cela semblait fonctionner dans mon cas:

var matches = Regex.Matches (mytext, "##(.*?)##", RegexOptions.Singleline);

Bien sûr, vous voudrez peut-être remplacer les signes de double hachage aux deux extrémités par vos propres caractères.

HTH.

3
Najeeb

Si vous essayez de faire correspondre les fins de ligne, vous pouvez trouver

Regex.Match("string", "regex", RegexOptions.Multiline)

aide

3
spender