J'essaie d'écrire une expression régulière dans .NET pour capturer toute la fonction à partir d'une liste de fonctions qui ressemblent à ceci.Expression régulière, référence arrière ou construction alternative
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
}
return result;
}
public string Test5()
{
return string.Format("inner string with bracket{0}", "test");
}
public string Last()
{
return string.Format("inner string with bracket{0}", "test");
}
alors je suis
((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*public string))
Ce capturera tous, mais la dernière fonction ... ou ce
((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*(public string)|$))
Cela correspondra toutes les fonctions correctement, sauf la première. La première fonction est seulement appariée partiellement.
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
} <-- the first capture only get to this point.
Une idée? S'il vous plaît fournir quelques explications si possible.
Devinez quoi? Les regex ne gèrent pas très bien les accolades arbitraires. –