#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, достаточно верно! моя невнимательность : (