【问题标题】:Regex how to replace \r\n with an actual newline in string正则表达式如何用字符串中的实际换行符替换 \r\n
【发布时间】:2012-07-18 11:10:11
【问题描述】:

因为 \r\n 是正则表达式中的“特殊”字符,我无法确定我实际需要在我的表达式中放入什么。

基本上我有一个看起来像...的字符串

bla\r\nbla\r\nbla

.. 我希望将其更改为 ...

bla
bla  
bla

...使用正则表达式。

有什么想法吗?

【问题讨论】:

  • s/\\r\\n/\n/ 什么语言?
  • 请说得更具体些...您在处理纯文本文件吗?还是你用 PHP、JAVA 等编码??
  • 我正在从已编码的服务中获取肥皂调用的结果,并且基本上删除了编码,因此我可以调试结果,但我不想“删除它”我需要更改字符到他们应该是什么。
  • 我想我可以将字符串拉入 Visual Studio 并通过简单的替换字符串来执行此操作。Replace("\\r\\n", "\r\n") 将是等价的我猜(虽然没有检查)(在 C# 中)
  • ok 搜索 \\r\\n 并将其替换为 \n

标签: regex


【解决方案1】:

\ 是正则表达式中的转义字符,可用于转义自身,这意味着您可以编写 \\n 以匹配文本 \n

使用模式\\r\\n 并替换为\r\n

【讨论】:

  • 仍有一些奇怪之处,但这一定是notepad ++处理表达式或其他东西的方式(就像它随机删除奇数字符一样,还有一些换行符比我预期的要多,所以它显然匹配超过它应该有。
  • @Wardy 这些是什么奇怪的东西?请记住,\\r\\n 不会单独匹配 \r 或单独匹配 \n。你有没有按预期工作的示例字符串?
  • 没关系...它至少解决了我的问题 :) 它的“hello world\r\nhello world”之类的东西奇怪地返回了一些随机的东西,例如“helo world(actual newline char)hello worl” ...不知道为什么...可能是notepad ++中的一个错误,但我正在处理一个代表电子邮件全部内容的字符串,所以我只需要某些关键信息,这是一个快速修复,使其不再可读:)
【解决方案2】:

您不一定需要正则表达式(除非这不是您要替换的唯一内容),但 \r\n 是大多数正则表达式变体的方式。

例子:

  • PHP

    • $str = preg_replace("/\\r\\n/", "\r\n", $str);
    • $str = str_replace('\r\n', "\r\n", $str);(或"\\r\\n" 第一个参数)
  • 红宝石

    • str = str.gsub(/\\r\\n/, "\r\n")
    • str = str.gsub('\r\n', "\r\n")

【讨论】:

  • 是的,我正在考虑将其拉入 Visual Studio 的想法(因为我正在处理的代码无论如何都是用 C# 编写的)但我只是想从 wcf 测试客户端获取结果并粘贴它进入记事本++进行检查,问题是我在测试客户端结果中得到\r\n而不是换行符lol
猜你喜欢
  • 2011-02-17
  • 2018-07-13
  • 2011-10-05
  • 2012-04-26
  • 2023-04-09
  • 1970-01-01
  • 2021-10-07
  • 2021-12-19
  • 2017-02-04
相关资源
最近更新 更多