2014-10-28 3 views
1

regex를 사용하여 코드에서 모든 변수 초기화 또는 할당을 찾으려고합니다. 현재 내가 작동하지만 또한 내가 그것을하고 싶지 않아 // a = 100;과 같은 코드를 주석 찾습니다주석 처리 된 행을 무시하는 정규식 C++

(\w+|\w[_])\s*=\s*(\d+\.\d+|.*) 

있습니다. 시도했습니다.

([^/]\w+|\w[_])\s*=\s*(\d+\.\d+|.*)` 

나는 /로 시작하는 문자열은 무시해야한다고 생각했지만 작동하지 않습니다.

편집 :

예를 들어 내가 b = 200; 하지만 // c = 3;

+2

처음에는 '//'는 C++의 주석 리더이고 (C 스타일 주석의 경우'/ *'), '\\\'가 아닙니다 –

+0

문자열의 코드와 일치시키지 않으려면 더 악화됩니다 상수와 주석 블록에 포함 된 일명 :/* a = 100 */확실하지 정규식은 당신에게 절대적으로 모든 것을 얻을 것이다. – Galik

+0

@PaulRoub 그건 당황 스러웠고 지금 고쳐졌습니다. – oxidising

답변

1

내가 필요하면이 걸릴 시도와 같은 라인을 찾아 그것을 싶습니다.

^(?:(?!\/\/).)*[a-z][a-z0-9\_]*\s*=\s*[0-9]+; 

SEE 데모 :http://regex101.com/r/jE4vM0/3

0

사용이 정규식 그리고 예, 그것은 주석 이후 인 경우에는 제 1 서브 일치, "//"되어 있는지 확인합니다. "//var=5;"//, var5을 얻을 것이다 동안 빈, var5 예를 "var=5;"를 들어

(//)*\s*(\w+|\w[_])\s*=\s*(\d+\.\d+|.*) 

은 세 개의 하위 일치를 얻을 것이다.

관련 문제