2011-08-13 10 views
2

다음 코드에 문제가 있습니다. 단어 속성을 포함하는 줄을 추출하고 싶습니다. http://www.regextester.com/을 사용했는데 내 프로그램에서 문자열이 그대로 유지됩니다. 나는 이유를 모르겠다. 그것은 줄 바꿈 문자를 올바르게 사용하지 않아서, ^와 $가 전체 문자열을 가져올 수 있습니까?정규식을 사용하여 Java 문자열에서 단어를 포함하는 행 추출

여기에 코드입니다 :

String attributes = VS.replaceAll("^(?!attribute).*$", ""); 

그리고 여기 문자열입니다 :

String vShaderStr = 
     "attribute vec4 a_position;            \n" 
     +"attribute vec3 a_normal;            \n" 
     +"attribute vec2 a_texCoord;           \n" 
     +"uniform mat4 modelViewMatrix;           \n" 
     +"uniform mat4 projectionMatrix;          \n" 
     +"void main()               \n" 
     +"{                  \n" 
     +"  gl_Position = projectionMatrix * modelViewMatrix * a_position; \n" 
     +"}                  \n"; 

감사합니다 많이!

답변

3

예, ^$ 일치하지 않는 String 내에서 \n로 끝나는 라인의 문자열의 시작과 끝. 그것을 바꾸기 위해서는 MULTILINE 플래그로 정규 표현식을 컴파일해야합니다. 그래서 해결책은 (?m)으로 정규식 사양을 시작하는 것입니다.

+0

킬리안은 정확합니다. 여기에 단위 테스트를 붙여 넣을 수는 없지만 정규식 행을 String 속성 = VS.replaceAll ("(? m)^(?! 속성). * $", "") ; 킬리안으로 라고 말했다 – eon

+0

고마워! 이제 작동합니다. – user826846

관련 문제