В настоящее время я проверяю все мои исходные файлы и читаю их текст с помощью File.ReadAllLines
, и я хочу отфильтровать все комментарии одним регулярным выражением. В основном все возможности комментирования. Я попробовал несколько решений регулярных выражений, которые я нашел в Интернете. Как этот:
@"(@(?:""[^""]*"")+|""(?:[^""\n\\]+|\\.)*""|'(?:[^'\n\\]+|\\.)*')|//.*|/\*(?s:.*?)\*/"
И лучший результат, когда я Google:
string blockComments = @"/\*(.*?)\*/";
string lineComments = @"//(.*?)\r?\n";
string strings = @"""((\\[^\n]|[^""\n])*)""";
string verbatimStrings = @"@(""[^""]*"")+";
См .: Regex для удаления комментариев строки из C #
Второе решение не распознает никаких комментариев.
То, что я сейчас делаю
public static List<string> FormatList(List<string> unformattedList, string dataType)
{
List<string> formattedList = unformattedList;
string blockComments = @"/\*(.*?)\*/";
string lineComments = @"//(.*?)\r?\n";
string strings = @"""((\\[^\n]|[^""\n])*)""";
string verbatimStrings = @"@(""[^""]*"")+";
string regexCS = blockComments + "|" + lineComments + "|" + strings + "|" + verbatimStrings;
//regexCS = @"(@(?:""[^""]*"")+|""(?:[^""\n\\]+|\\.)*""|'(?:[^'\n\\]+|\\.)*')|//.*|/\*(?s:.*?)\*/";
string regexSQL = "";
if (dataType.Equals("cs"))
{
for(int i = 0; i < formattedList.Count;i++)
{
string line = formattedList[i];
line = line.Trim(' ');
if(Regex.IsMatch(line, regexCS))
{
line = "";
}
formattedList[i] = line;
}
}
else if(dataType.Equals("sql"))
{
}
else
{
throw new Exception("Unknown DataType");
}
return formattedList;
}
Первый метод распознает комментарии, но также находит такие вещи, как
string[] bla = text.Split('\\\\');
Есть ли решение этой проблемы? Что регулярное выражение исключает совпадения в строке / символе? Если у вас есть другие ссылки, я должен проверить, пожалуйста, дайте мне знать!
Я много пробовал и не могу понять, почему это не сработает для меня.
[я тоже пробовал эти ссылки]
https://blog.ostermiller.org/find-comment
https://codereview.stackexchange.com/questions/167582/regular-expression-to-remove-comments
Regex для поиска комментария в исходном файле c #