我有以下问题。 你如何匹配一个被逗号(,)包围的句子,但句子的大小和单词数量可能不同。例如:
嗨,你好吗,再见
谢谢,我很好,再见
所以我想要匹配“你好吗”和“我很好” 我尝试过像
这样的东西 $_ =~ /,([\w\s\w\s\w,])/;
但这似乎非常错误并且“可能”匹配由空格分隔的3个单词。
答案 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
。