Regex найти значения времени - PullRequest
4 голосов
/ 07 июня 2011

Я продолжаю сталкиваться с ситуациями, когда я получаю два регулярных выражения, чтобы найти тонкие изменения (например, один скрипт для 0-9 и другой для 10-99 из-за дополнительного числа)[0-9] для поиска строк с одной цифрой, а затем [0-9][0-9] для поиска строк с несколькими цифрами, есть ли лучший шаблон для этого?

ex.какое выражение я бы использовал, чтобы одновременно найти строки 6:45 AM and 10:52 PM

Ответы [ 7 ]

11 голосов
/ 07 июня 2011

Вы можете указать повторение с помощью фигурных скобок.[0-9]{2,5} соответствует двум-пяти цифрам.Таким образом, вы можете использовать [0-9]{1,2} для соответствия одному или двум.

[0-9]{1,2}:[0-9]{2} (AM|PM)

Я лично предпочитаю использовать \d для цифр, таким образом

\d{1,2}:\d{2} (AM|PM)

2 голосов
/ 07 июня 2011

Если вы ищете шаблон времени, вы должны сделать что-то вроде:

\d{1,2}:\d{1,2} (AM|PM)

Или для более конкретного регулярного выражения времени

[0-1]{0,1}[0-9]{1,2}:[0-5][0-9] (AM|PM)
2 голосов
/ 07 июня 2011

[0-9] 1 или 2 раза, затем :, затем 2 [0-9]:

[0-9]{1,2}:[0-9]{2}\s(AM|PM)

или срок действия:

(?:[1-9]|1[0-2]):[0-9]{2}\s(?:AM|PM)
1 голос
/ 07 июня 2011

Так же, как и другие ответы, за исключением того, что AM / PM не фиксируются, что должно быть более эффективным

\d{1,2}:\d{1,2}\s(?:AM|PM)
0 голосов
/ 06 мая 2017

Имея эту строку в качестве ввода:

Sat, 6 May 2017 02:08:08 +0000

Я выполнил это regEx, чтобы получить комбинации из одной или двух цифр:

[0-9]*:[0-9]*:[0-9]*
0 голосов
/ 23 июля 2015

Можно проверить все типы форматов времени:

например, 12:05PM, 3:19AM, 04:25PM, 23:52PM

my $time = "12:52AM";
if ($time =~ /^[01]?[0-9]\:[0-5][0-9](AM|PM)/) {
    print "Right Time Dude...";
}
else { print "Wrong time Dude"; }

Это регулярное выражение, которое вы хотите.

    /^[01]?[0-9]\:[0-5][0-9](AM|PM)/
0 голосов
/ 07 июня 2011

, если у меня есть файл, содержащий:

1 ABC
2 123XYZ
3 6:45 *
4 123DHD
5 ABC
6 10:52 PM
7 CDE

и выполните следующее

$>grep -P '6:45\sAM|10:52\sPM' temp
6:45 AM
10:52 PM
$>.

должно сделать трюк (-P - это perl regx)

РЕДАКТИРОВАТЬ:

Возможно, я неправильно понял, другие ответы очень хороши, если я хотел просто найти время, но вы, кажется, после определенного времени.остальные будут соответствовать ЛЮБОМУ разу в формате ЧЧ: ММ.

в целом, я считаю, что предметы, которые вы ищете, будут |символ конвейера, который используется в этом случае, чтобы разрешить альтернативные фразы и {n, m} совпадать с временами нм {1,2}, будет соответствовать 1-2 раза и т. д.

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