ruby - 如何在不保留分隔符的情况下拆分字符串?

标签 ruby regex string split delimiter

在 Ruby 中,如何拆分字符串而不在生成的拆分数组中保留分隔符?我以为这是默认设置,但当我尝试时

2.4.0 :016 >   str = "a b c"
 => "a b c"
2.4.0 :017 > str.split(/([[:space:]]|,)+/)
 => ["a", " ", "b", " ", "c"]

我看到结果中包含空格。我希望结果只是

["a", "b", "c"]

最佳答案

来自String#split文档:

If pattern contains groups, the respective matches will be returned in the array as well.

回答您明确提出的问题:不匹配组:

#           ⇓⇓ HERE
str.split(/(?:[[:space:]]|,)+/)

或者,即使没有组:

str.split(/[[:space:],]+/)

或者,以更像 Rubyish 的方式:

'a    b, c,d   e'.split(/[\p{Space},]+/)
#⇒ ["a", "b", "c", "d", "e"]

关于ruby - 如何在不保留分隔符的情况下拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45130396/

相关文章:

php - PHP中字符串中的类常量

ruby-on-rails - Ruby:如何为我的枚举中的第一个常量获取 -1 的值?

javascript - 如何使用 JS (javascript) 计算特定字符集(在数组中)的数量?

python - 使用正则表达式和 Python 识别包含唯一单词的特定段落的标题(和 French Judges)

cisco 配置行的 Java 模式匹配

c# - LinqToDB 如何将枚举存储为字符串值?

ruby-on-rails - 如何处理 Rails 4 中的枚举值

ruby-on-rails - 插件和 Ruby gem 之间的区别?

ruby - 在 Ruby block 中使用 'return'

java - 正则表达式排除包含java中特定单词的句子