Java, регулярные выражения, String # совпадения (String) - PullRequest
0 голосов
/ 29 сентября 2011

Я привык к регулярным выражениям из Perl.Кто-нибудь знает, почему это не работает (например, «да» не печатается)?

if ("zip".matches("ip"))
  System.out.println("yea");

Спасибо.

Ответы [ 4 ]

4 голосов
/ 29 сентября 2011

matches() - полное совпадение;строка должна соответствовать шаблону.

if ("zip".matches("zip"))
    System.out.println("yea");

Таким образом, вы можете сделать:

if ("zip".matches(".*ip"))
  System.out.println("yea");

Для частичного соответствия вы можете использовать полные классы регулярных выражений и метод find();

Pattern p = Pattern.compile("ip");
Matcher m = p.matcher("zip");
if (m.find())
    System.out.println("yea");
1 голос
/ 29 сентября 2011

Аргумент для match () должен быть полностью сформированным регулярным выражением, а не просто подстрокой. Любое из следующих выражений приведет к выводу «да»:

"zip".matches(".*ip.*")

"zip".matches("zip")
0 голосов
/ 29 сентября 2011

Попробуйте конец с вместо совпадений для вашего "почтового" случая.

"zip".endsWith("ip");

Если вам нужно регулярное выражение,

"zip".matches(".*ip");

http://www.exampledepot.com/egs/java.lang/HasSubstr.html

0 голосов
/ 29 сентября 2011

Использование:

if ("zip".contains("ip"))

вместо RegEx в этом случае. Это быстрее, так как RegEx-парсер не нужен.

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