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
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)
.
En fait, cela fonctionne, mais avec l'option opposée, c'est-à-dire.
RegexOptions.Singleline
Vous allez probablement avoir un\r avant votre\n. Essayez de remplacer le\s par (\ r\n).
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.
Si vous essayez de faire correspondre les fins de ligne, vous pouvez trouver
Regex.Match("string", "regex", RegexOptions.Multiline)
aide