удалить комментарий строки из файла с помощью регулярных выражений - PullRequest
0 голосов
/ 09 октября 2019

Я использовал приведенный ниже шаблон, чтобы удалить строки комментариев из файла и выполнить его в редакторе Visual Studio. Однако тот же шаблон не работал с классом регулярных выражений C ++.

std::regex pattern ("#.*\n");
fullText =  std::regex_replace (fullText,pattern,"");

Приведенный выше код является очень краткой частью реализации: можно предположить, что весь текст читается в fullText сразу.

Фактические результаты должны удалить все строки комментариев из файла /строка. Завершающие комментарии можно игнорировать.

Образец файла имеет расширение .txt и имеет следующий текст:

# Initialization file..
# This file supports line comments, and does not support trailing comments.
# Text here is not case sensitive.
# White spaces are ignored in file processing. 
# Values are comma "," separated. 


Colmn,          Colmn,  
1,              0xFF,
2,              0xFF, 
3,              0xFF,
4,              0xFF,
5,              0xFF,

Я предполагаю, что все строки должны заканчиваться \n, и я пытаюсь выбратьвесь текст от # до \n.

Заранее благодарим за любые советы.

1 Ответ

1 голос
/ 10 октября 2019

Суть в том, что . не соответствует возврату каретки в регулярном выражении, соответствующем ECMAScript 5, а шаблон \n не соответствует символам CR, в то время как \r соответствует.

Вы можете решить проблему, используя [\r\n]* в конце шаблона:

std::regex pattern{"#.*[\r\n]*"};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...