Извлечение строк, содержащих слово, из строки Java с использованием регулярных выражений - PullRequest
2 голосов
/ 13 августа 2011

У меня проблема со следующим кодом.Я хочу извлечь строки, содержащие атрибут слова.Я использовал 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 Ответ

3 голосов
/ 13 августа 2011

Да, ^ и $ соответствуют только началу и концу строки String , а не строки, определенной * \n в пределах String. Вы должны скомпилировать свое регулярное выражение с флагом MULTILINE, чтобы изменить это. Поэтому решение состоит в том, чтобы начать спецификацию регулярного выражения с (?m).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...