从perl中的句子中提取单词

时间:2018-02-05 08:37:01

标签: regex perl

我试图从句子中提取某个单词并将其存储在Perl中的变量中。我不太了解比赛组及其运作方式。例如,我想从My name is Sammy Tyrell中提取Sammy。

我有这个:

^((M|m)y name is\s)|((I|i) am\s)?[(A-Za-z)]*

这是匹配Sammy Tyrell。但我不知道如何从中提取Sammy

1 个答案:

答案 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