ruby gsub新行字符

The*_*end 6 ruby regex newline gsub

我有一个带有换行符的字符串,我想要用于空格.

"hello I\r\nam a test\r\n\r\nstring".gsub(/[\\r\\n]/, ' ')
Run Code Online (Sandbox Code Playgroud)

像这样的东西^只有我的正则表达式似乎也在替换'r''n'字母.另一个约束是有时模式重复两次本身,因此就会与在连续两个空格来代替,虽然这不是优选的,最好不是被切断的所有文本分开.

如果有办法只选择新行字符.或者甚至更好,如果有更多的方法来接近这个去正则表达式?

Wik*_*żew 9

如果您要将单个空格替换为混合的连续换行符,则可以使用以下正则表达式解决方案:

s.gsub(/\R+/, ' ')
Run Code Online (Sandbox Code Playgroud)

请参阅Ruby演示.

所述\R匹配的任何类型的换行的和+匹配的量化的子模式的一次或多次出现.

请注意,如果您必须处理旧版本的Ruby,则需要使用与之匹配的否定字符类 或:[\r\n]\r\n

.gsub(/[\r\n]+/, ' ')
Run Code Online (Sandbox Code Playgroud)

或 - 添加所有可能的换行符:

/gsub(/(?:\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])+/, ' ')
Run Code Online (Sandbox Code Playgroud)