【问题标题】:split() but keep delimitersplit() 但保留分隔符
【发布时间】:2013-02-01 04:47:25
【问题描述】:

我以前从未使用过 Perl,我有一个基本问题。

 my $string1 = "Hi. My name is Vlad. It is snowy outside.";

 my @array = split('.' $string1); ##essentially I want this, but I want the period to be kept

我想在 '.' 处分割这个字符串但我想保持这个时期。这如何实现?

【问题讨论】:

标签: perl split


【解决方案1】:

你可以使用lookbehind来做到这一点:

split(/(?<=\.)/, $string)

正则表达式匹配句点后的空字符串。

如果要同时去掉句子之间的空格,可以改成:

split(/(?<=\.)\s*/, $string)

正负回溯解释here

【讨论】:

  • 它的工作原理正是它应该感谢你的方式。你介意解释一下到底发生了什么吗?
  • 添加了正则表达式信息的链接
  • 用 'foo' 这样的词对我有用:split(/(?=foo)/, $string)
  • @basin 没错,lookbehinds 必须有一个固定的长度。
【解决方案2】:

如果您不介意将句点拆分为数组中自己的元素,您可以使用括号告诉拆分以保留它们:

my @array = split(/(\.)/, $string);

【讨论】:

  • 我想我可以使用它,但我更愿意将它们附加到句子中,这样每个数组元素本质上就是一个句子。
  • 这听起来像是一个lookbehind 或lookahead 断言问题,我对此并不满意。
猜你喜欢
  • 2012-09-12
  • 2014-02-24
  • 2015-10-25
  • 1970-01-01
  • 2018-12-23
  • 2021-07-14
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
相关资源
最近更新 更多