Извлечение данных из String с использованием Java Regex - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть строка "11:45 AM, 12:30 PM, 04:50 PM"

Я хочу извлечь первый раз из этой строки, используя регулярное выражение Java.

Для этого я создал регулярное выражение java:

"\ d * \ S \ d * \ s (AM | PM)".

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

Ответы [ 2 ]

5 голосов
/ 20 ноября 2011

Захватывающие скобки там, где их нет.Вот пример кода, который должен вам помочь.

Pattern p = Pattern.compile("(\d*):(\d*)\s(AM|PM)");
Matcher m = p.matcher(str);
if (m.find()) {
    String hours = m.group(1);
    String minutes = m.group(2);
}
2 голосов
/ 20 ноября 2011

Если вы хотите извлечь только в первый раз, вы можете напрямую использовать метод разбора SimpleDateFormat, например:

    String testString = " 11:45 AM, 12:30 PM, 04:50 PM ";

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
    Date parsedDate = sdf.parse(testString);

    System.out.println(parsedDate);

Из API, метод partse: «Разбирает текст с начала данной строки для получения даты», поэтому он игнорирует две другие даты.

Относительно шаблона:

hh --> hours in am/pm (1-12)
mm --> minutes
aa --> AM/PM marker

Надеюсь, это поможет!

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