Как я могу проверить, содержит ли строка Perl буквы?

В Perl, какой regex я должен использовать, чтобы найти, имеет ли строка символов буквы или нет? Пример строки использовал: Thu Jan 1 05:30:00 1970

Это было бы прекрасно?

    if ($l =~ /[a-zA-Z]/)
 {
    print "string ";    
 }
 else
 {      
    print "number ";    
 }
5
задан brian d foy 8 January 2010 в 10:45
поделиться

5 ответов

попробуй это:

/[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
14
ответ дан 18 December 2019 в 05:55
поделиться

Если вы хотите сопоставить символы Юникода, а не только ASCII, попробуйте это:

#!/usr/bin/perl

while (<>) {
  if (/[\p{L}]+/) {
    print "letters\n";
  } else {
    print "no letters\n";
  }
}
9
ответ дан 18 December 2019 в 05:55
поделиться

Если вы ищете какую-либо букву с любого языка, вам следует обратиться к

\p{L}

Посмотрите на эту полную ссылку: Свойства символов уникода

5
ответ дан 18 December 2019 в 05:55
поделиться

Использование / [A-ZA-Z] / является американским направленным способом для этого. Принять любую букву, используйте один из

  • / [[: ALPHA:]] /
  • / \ p {l} /
  • / [^ \ w \ d _] /

Третий использует Двойной негативы: не не - буква, а не цифра, а не подчеркивает.

В зависимости от того, что вы выберете, те, кто поддерживает ваш код, безусловно, ценят его, если вы будете последовательно прилипать к одному!

0
ответ дан 18 December 2019 в 05:55
поделиться

Если вы хотите обнаружить, выглядит ли что-то как число для целей манипулирования его в Perl, вы захотите Scalar :: Util :: wall_like_number (Core поскольку Perl 5.7.3) Отказ Из Perlapi :

wood_like_number

Тест, если содержимое SV выглядит как номер (или есть число). Инф и бесконечность рассматривается как цифры (Так не выдаст не числовой предупреждение), даже если ваш ATOF () не вормить их.

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: