在Perl中,我应该使用什么正则表达式来查找字符串是否包含字母?使用的字符串示例:Thu Jan 1 05:30:00 1970
这样可以吗?
if ($l =~ /[a-zA-Z]/)
{
print "string ";
}
else
{
print "number ";
}
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 14
试试这个:
/[a-zA-Z]/
Run Code Online (Sandbox Code Playgroud)
要么
/[[:alpha:]]/
Run Code Online (Sandbox Code Playgroud)
否则,您应该提供您想要匹配的字符串的示例.
也看了 perldoc perlrequick
编辑:@ OP,你提供了示例字符串,但我不确定你想用它做什么.所以我假设你要检查一个单词是否都是字母,所有数字或其他东西.这是开始的事情.全部来自perldoc perlrequick(和perlretut)所以请阅读它们.
sub check{
my $str = shift;
if ($str =~ /^[a-zA-Z]+$/){
return $str." all letters";
}
if ($str =~ /^[0-9]+$/){
return $str." all numbers";
}else{
return $str." a mix of numbers/letters/others";
}
}
$string = "99932";
print check ($string)."\n";
$string = "abcXXX";
print check ($string)."\n";
$string = "9abd99_32";
print check ($string)."\n";
Run Code Online (Sandbox Code Playgroud)
产量
$ perl perl.pl
99932 all numbers
abcXXX all letters
9abd99_32 a mix of numbers/letters/others
Run Code Online (Sandbox Code Playgroud)
如果要匹配Unicode字符而不仅仅是ASCII字符,请尝试以下操作:
#!/usr/bin/perl
while (<>) {
if (/[\p{L}]+/) {
print "letters\n";
} else {
print "no letters\n";
}
}
Run Code Online (Sandbox Code Playgroud)