使用正则表达式的“String#split”方法的不同返回值

时间:2015-06-20 03:24:39

标签: ruby regex

为什么下面的第二个split会返回标点符号?为什么在正则表达式中使用括号会改变输出?

str = "This is a test string. Let's split it."

str.split(/\. /)
# =>["This is a test string", "Let's split it."]

str.split(/(\. )/)
# =>["This is a test string", ". ", "Let's split it."]

1 个答案:

答案 0 :(得分:1)

因为第二个代码使用包含组的正则表达式。来自String#split

  

如果模式是Regexp,则str被划分为模式匹配的位置。只要模式匹配零长度字符串,str就会分成单个字符。 如果模式包含组,则相应的匹配也将在数组中返回。