我可以在 Perl 中保存字符串的拆分字符吗

Can I save the split character of a string in Perl

我想将多句段落拆分为其组成句子,同时保留拆分字符,即'。 ? !'。我使用的代码是:

my @Sentence = split(/[\.\?\!]/,$Paragraph);

有什么方法可以节省那些句子终止符吗?

是的,如果您在分隔符周围添加括号,它们将包含在结果列表中。

my @Sentence = split /([\.\?\!])/, $Paragraph;

例如如果您在得到 qw(foo bar baz) 之前有字符串 foo.bar.baz,并且带有括号,您将得到 qw(foo . bar . baz).

如果您想保留句子中的定界符,您可以使用后向断言

my @Sentence = split /(?<=[\.\?\!])/, $Paragraph;
# result qw(foo. bar. baz)

如果你想去掉匹配后不必要的空格,你可以使用/(?<=[\.\?\!]) */