Использование регулярного выражения в Java для проверки того, что строка содержит шаблон - PullRequest
1 голос
/ 06 марта 2012

Простой вопрос.Если мне нужно проверить, содержит ли регулярное выражение простой шаблон, в моем случае это будет ^0039, если я напишу что-то вроде этого:

    if(Pattern.matches("^(0039|\\+39)", "00392121")) System.out.println("Yes");
    else System.out.println("No");

У меня, очевидно, No как ответ, потому что шаблонотсутствует 2121.Нужно ли преобразовывать шаблон в ^(0039|\\+39).* или есть метод, более подходящий для этого?

Я спрашиваю, потому что пишу метод для нашего механизма ETL, и я не уверен, что всекто будет использовать это, знает о том, как работает регулярное выражение ... так что я предвижу множество писем с жалобами и очевидным ответом: "append. * к вашему регулярному выражению" *

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

Я бы посоветовал вам использовать метод Matcher.find:

public static void main(String[] args) {
    Matcher m = Pattern.compile("^(0039|\\+39)").matcher("00392121");

    if (m.find())
        System.out.println("Found");
}

Примечание. При этом будет найдено только первое вхождение шаблона, поскольку он начинается с ^.


Также обратите внимание, что Pattern.matches(regex, input) сводится к:

Pattern.compile(regex).matcher(input).matches()

Какие звонки Matcher.matches. И в соответствии с API он сопоставляется со всем вводом:

Метод match пытается сопоставить всю входную последовательность с шаблоном.

1 голос
/ 06 марта 2012

Метод String.matches() возвращает true, если регулярное выражение соответствует строке целом .

Так что да, вы должны добавить .* в конец.

0 голосов
/ 06 марта 2012

Для этого конкретного случая я бы не использовал регулярное выражение, а вместо этого использовал бы StringWith String (вместо префикса String, int toffset) .

Особенно, если вы не уверены, что все, кто собирается использоватьэто будет знать о том, как работает регулярное выражение.

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