2010-08-15 3 views
0

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

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

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

ответ

3

Необходимо, чтобы learn regular expression syntax. Это не так же, как с помощью подстановочных знаков. Попробуйте это:

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

Существует много информации о регулярных выражениях here. Вы можете найти программу RegexBuddy полезной, пока вы изучаете регулярные выражения.

1

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

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

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

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

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

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

так что вам нужно будет что-то вроде

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

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

Смежные вопросы