有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用正则表达式从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) 个答案

  1. # 1 楼答案

    是的,^$只匹配字符串的开头和结尾,而不匹配^{中以\n结尾的行的开头和结尾。你需要编译带有MULTILINE标志的正则表达式来改变这一点。因此,解决方案是从(?m)开始您的正则表达式规范