C++ Boost ?<= Lookbehind expression error syntax

130
24 октября 2019, 04:10

необходимо реализовать регулярное выражение, которое парсит из файла директивы препроцессора #include "" <>, необходимо регулярное выражение, которое учитывает, что перед #include могут быть только пробелы, между #include и "" или <> , тоже должны отсутствовать символы (кроме пробелов) и необходимо доставать имена заголовочных файлов в кавычках. Была попытка реализовать следующее выражение:

(?<=^[\s]*#include[\s]+)((")|(<))[\w]+((\.h)|(\.cpp))((")|(>))

regextesting https://www.regextester.com/97722, отображает, что регулярное выражение отрабатывает корректно, однако компилятор выдаёт ошибку о неправильном использовании регулярного выражения.

Answer 1

Парсить С++ регулярками не получится. Для парсинга директив препроцессора необходимо реализовать полноценный препроцессор. Собственно исходные предположения о виде директивы #include неверные. Директива может выглядеть например вот так:

#define IO <iostream> // где-то выше
#include \
    IO
READ ALSO
Как залогиниться на сайт?

Как залогиниться на сайт?

Необходимо зайти на сайт oddsportalcom, чтобы в дальнейшем парсить его с помощью jsoup

122
Включить механизм шифрования в jvm [закрыт]

Включить механизм шифрования в jvm [закрыт]

Как включить механизм шифрования памяти в jvm? Для предотвращения Dll инъекций и замены переменных используя CheatEngine (как в denuvo)

134
Доступ к массиву из другого класса java

Доступ к массиву из другого класса java

хочу сделать так, чтобы при вызове метода из другого класса можно было менять значение его массива на нужное мне, но никак не выходит это сделать...

145