Как написать регулярное выражение для соответствия шаблону в Java? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть следующая строка Java:

"Java (simple) _New=AB_U748490_JAVA47BYH"

.. и я использую следующее регулярное выражение:

"_New=[A-Z]{2}_(\w{7})_(JAVA.+)";

Проблема: всегда возвращает false.Но почему?

1 Ответ

0 голосов
/ 19 ноября 2018

То, как вы написали свое регулярное выражение, будет работать с Matcher.find (), потому что find ищет везде регулярное выражение во всей входной строке.

Если вы хотите, чтобы ваше регулярное выражение полностью соответствовало, вам нужно немного изменить свое регулярное выражение и добавить его в начало. * В начале регулярного выражения что-то вроде этого,

.*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)

Обратите внимание, что в java вам нужно экранировать \ символ до \\

Попробуйте с этим кодом, и он напечатает Matches

public static void main(String[] args) {
    String s = "Java (simple) _New=AB_U748490_JAVA47BYH";
    Pattern p = Pattern.compile(".*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)");

    Matcher m = p.matcher(s);
    if (m.matches()) {
        System.out.println("Matches");
    } else {
        System.out.println("Didn't match");
    }
}

Или же вы можете использовать метод find () для объекта Matcher, если вы не хотите изменять свое регулярное выражение.

Надеюсь, это поможет.

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