2011-04-18 103 views
2

我想簡化下面的語句。Perl正則表達式簡化

if($_=~/^([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/) 

是否有我可以寫上面的語句,而不必重複[0-9A-FA-F] n倍的另一種方法?

回答

5

正好試試這個

if($_=~/^([0-9a-fA-F]{5})/) 
0

甚至

if(/^([0-9a-fA-F]{5})/) 
10

您可以使用Quantifiers

{N}匹配n次

if (/^([0-9a-fA-F]{5})/) 

類似地,可以使用一個POSIX字符類

xdigit任何十六進制數字 ( 「[0-9A-FA-F]」)。

if (/^([[:xdigit:]]{5})/) 
+3

1爲'[:xdigit:]',它更清楚地傳達代碼的意圖。 – Sean 2011-04-18 19:03:55