Регулярные выражения в Java: сопоставление значения даты в окружении других данных - PullRequest
3 голосов
/ 24 октября 2011

У меня много файлов, из которых я получаю данные, и я ударил стену со значениями даты, окруженными другими данными.Я использую Java, и регулярное выражение, которое я использую, работает для переменной string_i_currently_match, однако мне нужно, чтобы оно совпадало с example_string_i_need_to_match

String example_string_i_need_to_match = "data 10/12/2010, data, data";
String string_i_currently_match = "10/12/2010,";

Pattern pattern = Pattern.compile(

"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)$"

);

Matcher matcher = pattern.matcher(fileString);

boolean found = false;
while (matcher.find()) {
System.out.printf("I found the text \"%s\" starting at " +
   "index %d and ending at index %d.\n",
    matcher.group(), matcher.start(), matcher.end());
found = true;
}
if(!found){
    System.out.println("No match found.");
}

Возможно, это из-за того, что я исчерпан, но я не могузаставить это соответствовать.Любая помощь, даже указатели, будет принята с благодарностью.

Редактировать: Чтобы уточнить, я не хочу совпадать с data, data, но просто получить индекс даты сам.

Ответы [ 3 ]

3 голосов
/ 24 октября 2011

Знак ^ соответствует началу строки, а $ соответствует концу.Удаление их позволяет шаблону сопоставлять даты в строке.

Например:

"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)"
2 голосов
/ 24 октября 2011

Это будет соответствовать вашей дате:

[\d]{2}/[\d]{2}/[\d]{4}

В том, что вы опубликовали, вы допустили хотя бы одну ошибку: соответствует только дате в начале строки.

0 голосов
/ 24 октября 2011
String ResultString = null;
try {
    Pattern regex = Pattern.compile("\\b[0-9]{2}/[0-9]{2}/[0-9]{4}\\b");
    Matcher regexMatcher = regex.matcher(subjectString);
    if (regexMatcher.find()) {
        ResultString = regexMatcher.group();
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

Если я что-то не замечаю, это должно соответствовать вашей дате.

Посмотрите, как это работает здесь: http://ideone.com/HETGU

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