请用ruby中的正则表达式帮助我。
我有一个像
这样的文字1。你好,世界\ n 2.的 \ n 早安\ n
我期待两个字符串,但原来它有三个字符串,坏'新行 - \ n'字符
询问如何在'2.'之后替换'bad'\ n'在'早安\ n'之前 我遇到了像这样的数千个错误的麻烦
答案 0 :(得分:4)
str.gsub(/(\d\.)\n/, '\1')
替换所有紧接在数字前面的换行符(\d
)和一个点除以该数字和点。
答案 1 :(得分:1)
str.gsub(/(?:\d\.)\n/,'')
由于?:
答案 2 :(得分:1)
你可以删除像这样的'坏'换行符
string = "1. Hello, World\n 2.\n Good Morning\n"
new_string = string.gsub(/(\d+\.)\n/, '\1') #=> "1. Hello, World\n 2. Good Morning\n"
这将删除一个或多个数字后跟一个点后的换行符。
答案 3 :(得分:1)
undur_gongor的答案会告诉你你的要求,但我想知道这是不是你真正需要的。
例如,如果一条线合法地以数字结尾,然后是一个点,如下所示:
str = "1. Hello, World\n 2.\n Good Morning\n 3.Today is 29th January 2012.\n 4. This should be a new line.\n"
你最终会得到:
"1. Hello, World\n 2. Good Morning\n 3.Today is 29th January 2012. 4. This should be a new line.\n"
所以你最好不要使用:
str.gsub(/(^\d+\.|\n\s*\d+\.)\n/, '\1')
表达式的^\d+\.
部分检测字符串中的第一个“行”。 \n\s*\d+\.
部分查找后续的“行”;它在任何多位数字和点之前接受无限的空白字符。
它可能并不完美,但涵盖了更多场景。 你有更好的方法来检索数据吗?在最好的情况下,解析数据字符串是一项艰苦的工作;当字符串格式错误时更是如此。