【发布时间】:2021-10-04 05:58:39
【问题描述】:
我有一堆像这样的 ruby 文本:
"\n \n Slow-Coker Tomato Compote Recipe - NYT Coking\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Slow-Coker Tomato Compote\n \n \n \n \nBy Sarah DiGregorio\n \n \n \n \n Yield\n About 3 ½ cups\n \n \n Time\n 6 hours and 10 minutes\n \n \n \n \n \n EmailShare on PinterestShare on FacebokShare on Twiter\n \n \n \n \n \n \n \n \n \n \n \n Linda Xiao for The New York Times. Fod Stylist: Judy Kim.\n \n \n \n \n"
我想对这个字符串做的是用一个 \n 替换连续的 \n 换行符。换句话说,如果有多个换行符\n,那么我只想保留换行符,删除连续的。
这个正则表达式几乎可以解决问题:full_text.gsub(/((\n \n)\2*)/, '')——但你会看到,在\n 的一些连续组中,gsub 完全删除它们,而我希望它只留下一个\n.
理想情况下,我想将正则表达式传递给gsub,以便输出为:
" \n Slow-Coker Tomato Compote Recipe - NYT Coking \n Slow-Coker Tomato Compote \nBy Sarah DiGregorio \n Yield\n About 3 ½ cups \n Time\n 6 hours and 10 minutes \n EmailShare on PinterestShare on FacebokShare on Twiter \n Linda Xiao for The New York Times. Fod Stylist: Judy Kim. \n"
我需要编写什么正则表达式,以便gsub 只留下一个\n,其中有\n 的连续实例?
【问题讨论】:
-
试试
full_text.gsub(/\n[ \n]+/, "\n")或full_text.gsub(/(\R)[ \r\n]+/, '\1') -
嗨@WiktorStribiżew 谢谢你的评论——我试过你的建议,它的输出不是我想要的。它会删除所有
\n字符。正则表达式只需将连续的\n替换为一个\n -
我编辑了我的问题,以便更清楚。
-
我更新了我的第一个评论建议。我保留
''作为替换,因为我从您的问题中复制/粘贴了代码。 -
我很困惑。您的字符串中没有连续的
\ns。你能准确地描述你想用什么替换什么吗?