Как я могу проверить, содержит ли строка Perl буквы? - PullRequest
5 голосов
/ 08 января 2010

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

Это было бы хорошо?

    if ($l =~ /[a-zA-Z]/)
 {
    print "string ";    
 }
 else
 {      
    print "number ";    
 }

Ответы [ 6 ]

14 голосов
/ 08 января 2010

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

/[a-zA-Z]/

или

/[[:alpha:]]/

в противном случае вы должны привести примеры строк, которые вы хотите сопоставить.

также читать 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";

выход

$ perl perl.pl
99932 all numbers
abcXXX all letters
9abd99_32 a mix of numbers/letters/others
9 голосов
/ 08 января 2010

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

#!/usr/bin/perl

while (<>) {
  if (/[\p{L}]+/) {
    print "letters\n";
  } else {
    print "no letters\n";
  }
}
5 голосов
/ 08 января 2010

Если вы ищете какое-либо письмо на любом языке, вы должны пойти с

\p{L}

Взгляните на этот полный справочник: Свойства символов Unicode

0 голосов
/ 10 мая 2018
[^\W0-9_]

# or

[[:alpha:]]

См. Perldoc perlre

0 голосов
/ 09 января 2010

Если вы хотите определить, выглядит ли что-то как число для управления им в Perl, вам понадобится Scalar :: Util :: look_like_number (ядро, начиная с perl 5.7.3) , От перлапи :

looks_like_number

Проверьте, выглядит ли содержимое SV как число (или число). Inf и бесконечность рассматриваются как числа (поэтому не будет выдавать нечисловые предупреждение), даже если ваш atof () не Грок их.

0 голосов
/ 08 января 2010

Использование /[A-Za-z]/ - это ориентированный на США способ сделать это. Чтобы принять любое письмо, используйте одно из

  • /[[:alpha:]]/
  • /\p{L}/
  • /[^\W\d_]/

В третьем используется двойной отрицательный знак: не буква, не цифра и не подчеркивание.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...