使用正则表达式从Java字符串中提取包含单词的行
我对以下代码有问题。我想提取包含单词属性的行。我使用了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";
非常感谢
# 1 楼答案
是的,中以
^
和$
只匹配字符串的开头和结尾,而不匹配^{\n
结尾的行的开头和结尾。你需要编译带有MULTILINE
标志的正则表达式来改变这一点。因此,解决方案是从(?m)
开始您的正则表达式规范