2016-02-23 3 views
-5

Мне нужно проверить строку, которая содержит год или нет например, человек-паук (2014) как я могу?string pattern matching using perl regex

+3

Что вы пытались до сих пор? –

ответ

3

Так много вещей выглядят год, особенно если они не ограничены. Поскольку вы, кажется, ищете годы производства видеоматериалов, мы можем по крайней мере ограничить его до 1900-х и 2000-х годов.

$str =~ /\b(?:19|20)[0-9]{2}\b/ 

Если год, в котором вы заинтересованы всегда будет в круглые скобки, следующие будут лучше:

$str =~ /\((?:19|20)[0-9]{2}\)/ 
+0

это регулярное выражение является излишним ... и вы просто скопировали мой ответ>.> не говоря уже о том, что если бы был год, например, 1856? – Seekheart

+0

@ Шикарный, LOL! Мне не только потребовалось бы больше времени, чтобы скопировать ваше регулярное выражение, чем самому писать, т. Е. Он считает, что '(0001)' и '(4444)' - годы. Там также подробно, что мое решение, наиболее похожее на ваше, было опубликовано за 4 минуты до того, как вы отправили свои сообщения. – ikegami

+0

@ Seekheart, Фильмы не существовали в 1856 году. Пока фильмы предшествовали 1900 году, я ставлю, что это не даты производства, с которыми он столкнется. В случае непредвиденного случая, что он мог столкнуться с этим, изменение шаблона для поддержки 1800-ых было бы тривиальным и очевидным. – ikegami

0

Если вы знаете, фильмы, все они имеют 4 цифры года с скобкой, то следующее подойдет вашей фантазии;)

my $test = 'spiderman (2014)'; 

if ($test =~ m/[(]+\d{4}[)]+/){ 
    print "Year is present!\n"; 
} 
+0

@ikegami как? регулярное выражение обеспечивает там скобки, за которыми следуют 4 числа, и заканчивается скобкой ... – Seekheart

+1

1234 ... хороший год? – zdim