Не удается заставить Pattern.matches (regExExpression) работать? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть каталог с тысячами файлов, которые следуют конечному числу различных соглашений об именах. Я пытаюсь использовать RegEx, чтобы помочь мне определить соглашения об именах файлов, когда я перебираю список имен файлов. Затем я буду использовать эту логику, чтобы выбрать правильную методологию анализа имени файла.

Это мой код:

//Define regex rule <br>
String regExRule = "Final_[0-9]{1,4}-[0-9]{1,4}([.][0-9]{1,3})_[A-Za-z0-9]+([.][0-9]{1,3})?[.]wav";

//Compile the rule <br>
Pattern p = Pattern.compile(regExRule);

//See if there is a match <br>
Matcher m = p.matcher("Final_0-1.1_FirstLast.4.wav");

//See if there is a match <br>
if(m.matches()){ //we have a match}



//   Always returns false even though I can confirm the rule works using
//this tool: https://www.regextester.com/

    Rule: <br>
    Final_[0-9]{1,4}-[0-9]{1,4}([.][0-9]{1,3})_[A-Za-z0-9]+([.][0-9]{1,3})?[.]wav

Тестовая строка:

Final_0-1.1_FirstLast.4.wav

1 Ответ

0 голосов
/ 07 июня 2019

Ваше первоначальное выражение, кажется, работает хорошо, если я правильно понимаю проблему, мы просто заменим [.] на \., если вы хотите:

Final_[0-9]{1,4}-[0-9]{1,4}(\.[0-9]{1,3})_[A-Za-z0-9]+([.][0-9]{1,3})?\.wav

Демо

Test

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "Final_[0-9]{1,4}-[0-9]{1,4}(\\.[0-9]{1,3})_[A-Za-z0-9]+([.][0-9]{1,3})?\\.wav";
final String string = "Final_0-1.1_FirstLast.4.wav";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

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