我遇到以下代码问题。我想提取包含word属性的行。我已经使用了http://www.regextester.com/,这似乎工作正常,但在我的程序中,字符串保持不变。我不明白为什么。是不是它没有正确使用换行符,所以^和$得到整个字符串?
以下是代码:
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";
非常感谢!
答案 0 :(得分:3)
是的,^
和$
仅匹配字符串的开头和结尾,而不是\n
中的String
终止行}。您需要使用标志MULTILINE
编译正则表达式来更改它。因此,解决方案是使用(?m)
启动正则表达式规范。