我试图从句子中提取某个单词并将其存储在Perl中的变量中。我不太了解比赛组及其运作方式。例如,我想从My name is Sammy Tyrell
中提取Sammy。
我有这个:
^((M|m)y name is\s)|((I|i) am\s)?[(A-Za-z)]*
这是匹配Sammy Tyrell
。但我不知道如何从中提取Sammy
。
答案 0 :(得分:2)
喜欢这个
use strict;
use warnings 'all';
use feature 'say';
my $s = 'My name is Sammy Tyrell';
say $1 if $s =~/(?:my name is|i am) (\S+)/i;
Sammy
(?: ... )
将文字分组而不捕获它
/i
修饰符可启用与大小写无关的匹配,以避免必须编写(M|m)y
等。
\S
匹配任何非空格字符,因此(\S+)
匹配并捕获所有Sammy