使用正则表达式从Java字符串中提取包含单词的行

时间:2011-08-13 15:53:13

标签: java regex

我遇到以下代码问题。我想提取包含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";

非常感谢!

1 个答案:

答案 0 :(得分:3)

是的,^$仅匹配字符串的开头和结尾,而不是\n中的String终止行}。您需要使用标志MULTILINE编译正则表达式来更改它。因此,解决方案是使用(?m)启动正则表达式规范。