如何在正则表达式扫描中转义换行符

时间:2013-01-09 11:54:03

标签: ruby regex

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"]

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

使用/m修饰符,它允许点匹配换行符:

str.scan(/\S.{0,15}\S(?=\s|\z)|\S+/m)

此外,我建议您使用\z代替$,因为$匹配行的结尾; \z是强制Ruby匹配字符串结尾的唯一方法。在这个例子中没关系,但这是一个很好的习惯。 Ruby在这两点上与所有其他正则表达式不同。