Expression régulière:
((?:--|/\*)[^~]*)~(\*/)?
code C# pour l'utiliser:
string code = "all that text of yours";
Regex regex = new Regex(@"((?:--|/\*)[^~]*)~(\*/)?", RegexOptions.Multiline);
result = regex.Replace(code, "$1;$2");
Non testé avec C#, mais l'expression régulière et le remplacement fonctionne en RegexBuddy avec votre texte =)
note: Je ne suis pas très brillant écrivain d'expression régulière, il aurait probablement pu être mieux écrit. Mais ça fonctionne. Et les deux poignées vos cas avec un liner-les commentaires commençant par - et aussi ceux multilignes avec/* */
Edit: lire votre commentaire à l'autre réponse, donc retiré l'ancre ^
, pour qu'il prenne soin des commentaires ne commençant pas sur une nouvelle ligne aussi.
Édition 2: Figuré il pourrait être simplifié un peu. Aussi trouvé que cela fonctionne bien sans l'ancre de fin $ ainsi.
Explication:
// ((?:--|/\*)[^~]*)~(\*/)?
//
// Options:^and $ match at line breaks
//
// Match the regular expression below and capture its match into backreference number 1 «((?:--|/\*)[^~]*)»
// Match the regular expression below «(?:--|/\*)»
// Match either the regular expression below (attempting the next alternative only if this one fails) «--»
// Match the characters “--” literally «--»
// Or match regular expression number 2 below (the entire group fails if this one fails to match) «/\*»
// Match the character “/” literally «/»
// Match the character “*” literally «\*»
// Match any character that is NOT a “~” «[^~]*»
// Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
// Match the character “~” literally «~»
// Match the regular expression below and capture its match into backreference number 2 «(\*/)?»
// Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
// Match the character “*” literally «\*»
// Match the character “/” literally «/»
bien, la chose est que je vais devoir le diviser sur une nouvelle ligne. et je ne veux pas que j'ai un code qui est trop grand. En outre, il peut arriver que pour un code comme sélectionnez * à partir de g; - sélectionnez l'instruction je ne serai pas en mesure de remplacer le; en commentaire. – Archie