匹配perl中一行的句子

时间:2012-11-23 15:38:07

标签: regex perl

我有以下问题。 你如何匹配一个被逗号(,)包围的句子,但句子的大小和单词数量可能不同。例如:

嗨,你好吗,再见

谢谢,我很好,再见

所以我想要匹配“你好吗”和“我很好” 我尝试过像

这样的东西
 $_ =~ /,([\w\s\w\s\w,])/;

但这似乎非常错误并且“可能”匹配由空格分隔的3个单词。

2 个答案:

答案 0 :(得分:5)

不是简单的/,(.+?),/吗?或/,([\w\s]+?),/如果你想确定你只有单词和空格?

my $str = "Hi,How are you,bye";

$str =~ /,([\w\s]+?),/;
print "$1\n";

$str = "Thanks, I am very good,bye";

$str =~ /,([\w\s]+?),/;
print "$1\n";

答案 1 :(得分:2)

以下是一个例子:

if ($sentence =~ /,(.+?),/g) {
    print $1;
}

这将匹配句子并将结果放入$1。 如果你有多个句子:

while (<>) {
    while (/,(.+?),/g) {
        print $1;
    }
}

这是一个示例,其中包含来自标准输入的输入,并且只获取逗号之间的值。

(.+?)将匹配长度大于0且不是逗号的所有内容。由于(),它会保存到$1

相关问题