我有以下问题。你如何匹配一个用逗号(,)包围的句子,但句子的大小和单词数量可能会有所不同。例如:
嗨,你好吗,再见
谢谢,我很好,再见
所以我想匹配“你好吗”和“我很好”我试过类似的东西
$_ =~ /,([\w\s\w\s\w,])/;
但这似乎非常错误,并且“可能”匹配由空格分隔的 3 个单词。
不是很简单/,(.+?),/
吗?或者/,([\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";
这是一个例子:
if ($sentence =~ /,(.+?),/g) {
print $1;
}
这将匹配句子并将结果放入$1
. 如果你有多个句子:
while (<>) {
while (/,(.+?),/g) {
print $1;
}
}
这是一个示例,输入来自标准输入并仅获取逗号之间的值。
(.+?)
将匹配长度大于 0 且不是逗号的所有内容。因为()
它将被保存到$1
.