2013-08-01 2 views
0

Я пытаюсь написать простое регулярное выражение для формата даты dd/MM/YYYY и времени HH:mm:ss. Google всегда ссылается GAWK: Effective AWK Programming, где я могу увидеть:AWK - как установить количество элементов регулярного выражения? Как Java {n} {n, m} {n,}

[: цифры:] - числовые символы. и {n} {n,} {n, m} в качестве кванторов

В этой книге нет примеров (или я не могу найти их) о цифрах + кванторы в сложных регулярных выражениях.

Мой регулярное_выражение выглядит следующим образом:

echo 24/06/2013 | awk ' $0 ~ /[[:digit:]]{2}\/[[:digit:]]{2}\/[[:digit:]]{4}/ { print "MATCHES!"}' 

И это не работает, хотя аналогичный пример:

echo 24/06/2013 | awk ' $0 ~ /[[:digit:]]+\/[[:digit:]]+\/[[:digit:]]+/ { print "MATCHES!"}' 

работает отлично! Кто-нибудь может предложить решение? Я использую Cygwin.

ответ

2

Вы забыли бежать /:

echo 24/06/2013 | awk ' $0 ~ /[[:digit:]]{2}\/[[:digit:]]{2}\/[[:digit:]]{4}/ { print "MATCHES!"}' 

EDIT:

Делает регулярное выражение более точным:

echo 24/06/2013 | awk ' $0 ~ /^[[:digit:]]{2}\/[[:digit:]]{2}\/[[:digit:]]{4}$/ { print "MATCHES!"}' 
+0

жаль \ - она ​​удаляется форматированием, но это все еще не работает – user2602807

+0

какая ОС, оболочка и версия awk вы используете? он отлично работает здесь ... – marderh

+0

Я использую win7 с Cygwin. Как написано в FAQ, чтобы узнать версию Cygwin - я использую uname, и он показывает мне MINGW32_NT-6.1 – user2602807

Смежные вопросы