В Perl, какой regex я должен использовать, чтобы найти, имеет ли строка символов буквы или нет? Пример строки использовал: Thu Jan 1 05:30:00 1970
Это было бы прекрасно?
if ($l =~ /[a-zA-Z]/)
{
print "string ";
}
else
{
print "number ";
}
попробуй это:
/[a-zA-Z]/
или
/[[:alpha:]]/
в противном случае, вы должны привести примеры строк, которые вы хотите сопоставить.
также прочитайте perldoc perlrequick
Edit: @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";
вывод
$ perl perl.pl
99932 all numbers
abcXXX all letters
9abd99_32 a mix of numbers/letters/others
Если вы хотите сопоставить символы Юникода, а не только ASCII, попробуйте это:
#!/usr/bin/perl
while (<>) {
if (/[\p{L}]+/) {
print "letters\n";
} else {
print "no letters\n";
}
}
Если вы ищете какую-либо букву с любого языка, вам следует обратиться к
\p{L}
Посмотрите на эту полную ссылку: Свойства символов уникода
Использование / [A-ZA-Z] /
является американским направленным способом для этого. Принять любую букву, используйте один из
/ [[: ALPHA:]] /
/ \ p {l} /
/ [^ \ w \ d _] /
Третий использует Двойной негативы: не не - буква, а не цифра, а не подчеркивает.
В зависимости от того, что вы выберете, те, кто поддерживает ваш код, безусловно, ценят его, если вы будете последовательно прилипать к одному!
Если вы хотите обнаружить, выглядит ли что-то как число для целей манипулирования его в Perl, вы захотите Scalar :: Util :: wall_like_number (Core поскольку Perl 5.7.3) Отказ Из Perlapi :
wood_like_number
Тест, если содержимое SV выглядит как номер (или есть число). Инф и бесконечность рассматривается как цифры (Так не выдаст не числовой предупреждение), даже если ваш ATOF () не вормить их.