/ / Znajdź wystąpienie znaków spoza ASCII w kodzie C++ z komentarzami spoza ASCII - c++, regex

Znajdź występowanie znaków spoza ASCII w kodzie C ++ z komentarzami innymi niż ASCII - c ++, regex

Mam kod źródłowy ze znakami cyrylicy wkomentarze i ciągi. MSVC dopuszcza znaki cyrylicy w identyfikatorach. Jak znaleźć te wszystkie znaki cyrylicy, ignorując wszystkie komentarze i ciągi? Chcę to zrobić bez użycia gcc lub skryptów, idealnie z prostym wyszukiwaniem wyrażeń regularnych. Nie jest trudno znaleźć komentarze /*.*?*/ , ale jak znaleźć coś poza komentarzami i nie z zestawu znaków ASCII?

Odpowiedzi:

0 dla odpowiedzi № 1

Załóżmy, że wszystkie komentarze zachowują się jak"//"--nawet te, które są "/* komentarzem */"--w tym sensie, że po rozpoczęciu komentarza nie będzie więcej kodu po komentarzu w tym samym wierszu. Spróbuj przepuścić plik źródłowy przez to :

perl -lne "print $1 if m{^([^/]+)(?:/[/*])?}"

Dzięki temu uzyskasz wszystko oprócz komentarzy.

Pozostały problem to funkcja zestawu znaków. Jeśli jest to Windows-1251, możesz szukać takich wzorców: "[^x00-x7f]+"