регулярные выражения, использующие java.util.regex API- java - PullRequest
0 голосов
/ 16 августа 2010

Как создать регулярное выражение для поиска строк с заданным шаблоном? Например, я хочу найти все строки, которые соответствуют шаблону '* index.tx?'. Теперь это должно найти строки со значениями index.txt, mainindex.txt и что-тоindex.txp.

Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");

Этот код явно не работает.

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Вам необходимо изучить синтаксис регулярного выражения . Это не так же, как с использованием подстановочных знаков. Попробуйте это:

Pattern pattern = Pattern.compile("^.*index\\.tx.$");

Здесь много информации о регулярных выражениях здесь . Программа RegexBuddy может оказаться полезной при изучении регулярных выражений.

1 голос
/ 16 августа 2010

Код, который вы опубликовали, не работает, потому что:

  1. точка . - это специальный символ регулярного выражения.Это означает один экземпляр любого символа .
  2. * означает любое количество вхождений предшествующего символа .

, следовательно,.* означает любое количество вхождений любого символа .

, поэтому вам потребуется что-то вроде

 Pattern pattern = Pattern.compile(".*\\.html.*");

, причина для \\ в том, что мы хотимвставить точку, хотя это специальный знак регулярного выражения.это означает: совпадать со строкой, в которой сначала есть любое количество диких символов, за которыми следует точка, затем html, за которым следует что угодно.

1 голос
/ 16 августа 2010

* соответствует нулю или более вхождений предыдущего токена, поэтому, если вы хотите сопоставить ноль или более любого символа, используйте .* вместо (. соответствует любому символу).

Модифицированное регулярное выражение должно выглядеть примерно так:

Pattern pattern = Pattern.compile("^.*\\.html$");
  • ^ соответствует началу строки
  • .* соответствует нулю или более любого символа
  • \\. соответствует точечному символу (если его не экранировать, он будет соответствовать любому символу)
  • $ соответствует концу строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...