Регулярное выражение:
((?:--|/\*)[^~]*)~(\*/)?
C# код, чтобы использовать его:
string code = "all that text of yours";
Regex regex = new Regex(@"((?:--|/\*)[^~]*)~(\*/)?", RegexOptions.Multiline);
result = regex.Replace(code, "$1;$2");
Не тестировался с C#, но регулярное выражение и замещение работы в RegexBuddy с текстом =)
Примечание: Я не очень яркий писатель регулярных выражений, поэтому, возможно, он был бы лучше написан. Но это работает. И обрабатывает оба ваших случая с однострочным комментарием, начиная с - и также многострочными с/* */
Редактировать: Прочитайте свой комментарий к другому ответу, поэтому удалите якорь ^
, чтобы он заботился комментариев, не начинающихся с новой строки.
Редактировать 2: Возможно, оно немного упростилось. Также найдено, что он отлично работает без конечного $ anchor.
Объяснение:
// ((?:--|/\*)[^~]*)~(\*/)?
//
// 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 «/»
хорошо, дело в том, я должен буду разбить его на новую строку. и я не хочу, так как у меня есть слишком большой код. Также может случиться так, что для кода, такого как , выберите * from g; - выберите оператор i не сможет заменить; в комментарии. – Archie