J'ai la chaîne suivante, et je suis en train d'extraire uniquement le contenu dans le FUNC():Comment regex C# string
FUNC (strToExtract)
Je vais avoir du mal à extraire à l'aide Regex.Replace()
aide Kind serait apprécié
grâce
J'ai la chaîne suivante, et je suis en train d'extraire uniquement le contenu dans le FUNC():Comment regex C# string
FUNC (strToExtract)
Je vais avoir du mal à extraire à l'aide Regex.Replace()
aide Kind serait apprécié
grâce
Salut vous pouvez essayer quelque chose comme ceci:
Regex regexp = new Regex(@"FUNC((.*))", RegexOptions.IgnoreCase);
MatchCollection matches = regexp.Matches(inputString);
Match m = matches[0];
Group g = m.Groups[0];
Edit: supprimé l'échappé() dans @ "FUNC (. (*))"
si vous connaissez la chaîne commence toujours par "FUNC (" et se termine par ")", puis non en utilisant une expression régulière est beaucoup moins cher:
string myString = "FUNC(strToExtract)";
string startsWith = "FUNC(";
string endsWith = ")";
if (myString.StartsWith(startsWith) && myString.EndsWith(endsWith))
{
string extracted = myString.Substring(startsWith.Length, myString.Length - endsWith.Length - startsWith.Length);
}
+1 Pour supprimer le 2ème problème;) – juharr
Essayez ceci:
string input = "Func(params)";
string pattern = @"\w+\((.+?)\)";
Match m = Regex.Match(input, pattern);
string result = m.Groups[1].Value;
Console.WriteLine(result);
Les parenthèses doivent être échappés, sinon ils seront interprétés comme un groupe regex. Le .+?
correspondra à au moins un caractère et n'est pas gourmand, donc il ne correspondra pas plus que nécessaire si plusieurs correspondances existent dans la même entrée. L'utilisation de \w+
rend le modèle suffisamment flexible pour gérer différents noms de fonctions, pas seulement "Func".
N'a pas fonctionné. J'ai réussi à faire egex.Replace ("FUNC (foaksdokfakosdfko)", @ "FUNC \ ((. *) \)", "$ 1") – Himberjack
Désolé, je n'ai pas testé. Et je pensais que vous devriez échapper à la() de la méthode FUNC. Heureux que vous trouviez la solution;) – Wavyx
Je ne pense pas que cela fonctionnera pour les 2 raisons suivantes: 1) les parenthèses devraient être échappées de manière appropriée, 2) le crochet de fermeture sera égalé par '. *' Parce que l'appariement est gourmand et donc le support à la fin n'est jamais égalé. EDIT: peut-être que les crochets n'ont pas besoin d'être échappés lorsque vous utilisez @ .. juste deviner – Bazzz