Используя регулярное выражение в Perl, как мне найти первое вхождение любой буквы?

#regex #perl

#регулярное выражение #perl

Вопрос:

Я в тупике; Я уже пробовал несколько вещей, но то, что я пытаюсь извлечь, — это первая буква в строке Perl.

У меня есть, например:

 10emV
  

Я хочу использовать регулярное выражение для извлечения первой буквы, которая в данном случае была бы e .

Ответ №1:

Вы можете просто выполнить поиск по p{L} или [a-zA-z] буквам ASCII. Первое совпадение — это первая буква.

Если вы хотите сопоставить начало строки (по какой-то причине), вы также можете использовать AP{L}*p{L} , или A[^a-zA-z]*[a-zA-z] .

Смотрите также: Руководство по регулярным выражениям Perl — Больше о символах, строках и классах символов

Комментарии:

1. Излишне говорить, что все зависит от того, что означает «буква». Также: это мой 1000-й ответ на stack overflow…

Ответ №2:

 if ( $string =~ m/([[:alpha:]])/ ) {
    print $1, $/;
}
  

Комментарии:

1. Просто любопытно, что $/ делает?

2. О, это специальная переменная Perl, которая содержит разделитель входных записей (обычно ‘ n’). Вероятно, мне следовало ввести: ‘напечатать «$ 1 n»;’ Это было бы понятнее.

Ответ №3:

 my $let = $1 if '10emV' =~ m/([a-z] ?)/g;
print $let;
  

Комментарии:

1. Не объявляйте лексические переменные в условных выражениях. Как $let вы думаете, что это такое, если условие возвращает false ? 🙂

2. @brian d foy, достаточно верно! моя невнимательность : (