Справка по регулярным выражениям - Строка - JWE-766.1.pdf - Шаблон - Извлечение 766 - PullRequest
1 голос
/ 21 июля 2010

Мне нужна помощь с регулярным выражением.

У меня есть несколько таких файлов:

  • JWE-766.1.pdf
  • JWE-766.2.pdf
  • JWE-768.1.т. е. 766.

    Кроме того, регулярное выражение для извлечения 1 и 2 из JWE-766.1.pdf и JWE-766.2.pdf соответственно.

    Любая помощь будет принята с благодарностью.1020 * Спасибо, ребята!

Ответы [ 4 ]

2 голосов
/ 21 июля 2010
Pattern p = Pattern.compile("^JWE-([0-9]+)\\.([0-9]+)\\.pdf$");
Matcher m = p.matcher("your string here");

if (m.find()) {
    System.out.println(m.group(1)); //first number group
    System.out.println(m.group(2)); //second number group
}

Взято из здесь

Кроме того, обязательно используйте объект Pattern p, если вы просматриваете последовательность строк

1 голос
/ 21 июля 2010

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

Попробуйте шаблон "^ JWE - (\ d +) \. (\ D?)\ .pdf $ "и я думаю, что группа 1 должна быть 766, а группа 2 должна быть 1.

Однако, как указано выше, если имена файлов одинаковы по длине, прямое манипулирование индексом будет быстрее.

... одна минута слишком медленная.Король эльфов быстр, как ветер.

1 голос
/ 21 июля 2010

JWE - (\ d +). (\ D +). Pdf

должно помочь.

конечно при создании строки:

Pattern  p = Pattern.compile("JWE-(\\d+)\.(\\d+)\\.pdf");
Matcher m = p.matcher(s); // s contains your filename
if (m.matches()) { 
   String fullName = m.group(0);
   int firstIndex = m.group(1); // 766
   int secondIndex = m.group(2); // 1
}

Веселись

1 голос
/ 21 июля 2010

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

т.е.

string s = "JWE-766.1.pdf";
string firstNumber = s.substring( s.indexOf("-" +1), s.indexOf(".") );
string secondNumber = "JWE-766.1.pdf".substring( s.indexOf("." +1), s.lastIndexOf(".") ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...