str = "This\n is a sample text for test"
str.scan(/\S.{0,15}\S(?=\s|$)|\S+/)
# => ["This", "is a sample text", "for test"]
此处,当换行符(\n
)存在时,它会分裂。我实际上想要输出为,
["This\n is a", "sample text for", "test"]
我怎样才能做到这一点?
答案 0 :(得分:2)
使用/m
修饰符,它允许点匹配换行符:
str.scan(/\S.{0,15}\S(?=\s|\z)|\S+/m)
此外,我建议您使用\z
代替$
,因为$
匹配行的结尾; \z
是强制Ruby匹配字符串结尾的唯一方法。在这个例子中没关系,但这是一个很好的习惯。 Ruby在这两点上与所有其他正则表达式不同。