1

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

嗨,你好吗,再见

谢谢,我很好,再见

所以我想匹配“你好吗”和“我很好”我试过类似的东西

 $_ =~ /,([\w\s\w\s\w,])/;

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

4

2 回答 2

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";
于 2012-11-23T15:42:35.080 回答
2

这是一个例子:

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

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

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

这是一个示例,输入来自标准输入并仅获取逗号之间的值。

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

于 2012-11-23T15:47:13.457 回答