2012-05-23 7 views
1

주석 및 문자열에 키릴 문자가있는 소스 코드가 있습니다. MSVC는 식별자에 키릴 문자를 허용합니다. 모든 의견과 문자열을 무시하고 모든 키릴 문자를 찾는 방법? 나는 gcc 나 스크립트를 사용하지 않고 간단하게 정규식 검색을하고 싶다. 코멘트를 찾는 것이 어렵지 않습니다 /*.*?*/, 그러나 ASCII 문자 세트가 아닌 주석에서 찾을 수있는 방법은 무엇입니까?비 ASCII 주석이있는 C++ 코드에서 비 ASCII 문자 발생을 확인하십시오.

+0

정규식을 사용해야합니까? –

+1

음. '// 이것은 C++의 주석입니다.''this \ "는 문자열 \\"'이므로 (항상 정규식과 같이) 여러분이 말하는 것보다 더 많은 것이 있습니다 ;-) –

+0

문자열의 주석 구분 기호 사이 , 주석의 문자열,'#if 0', digraphs, trigraphs 등등. 코드베이스가 꽤 제한되어 있지 않거나, 꽤 잘못된 것들을 기꺼이 참아 내지 않으면 regexes로부터 의미있는 결과를 얻는 것이 어려울 것입니다 결과 .IOW, @SteveJessop은 맞습니다.하지만 실제로 의미하는 것보다 훨씬 더 나쁩니다. –

답변

0

모든 댓글은 '// *'처럼 행동한다고 ​​가정합니다. '/ * comment * /'인 경우에도 - 댓글이 시작되면 댓글 뒤에 더 많은 코드가 표시되지 않습니다. 같은 줄. 다음을 통해 소스 파일을 파이핑 해보십시오.

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

이렇게하면 의견을 제외한 모든 것을 얻을 수 있습니다.

나머지 문제는 문자 집합의 기능입니다. Windows-1251 인 경우 다음과 같은 패턴을 찾을 수 있습니다. '[^\x00-\x7f]+'

+0

질문은 하나의 정규식을 통해 소스를 파이프 처리하고 주석을 잘라 내고 다른 정규식과 비교하는 것이 아닙니다. 문제는 하나의 정규식에서 동시에 잘라내어 일치시키는 것이 었습니다. 예를 들어, MSVC에서 정규식을 검색 할 때 유용합니다. – ZAB