【问题标题】:How do I only find newlines in a Regex?我如何只在正则表达式中找到换行符?
【发布时间】:2019-06-13 02:20:00
【问题描述】:

我有一个正则表达式,它可以找到编码为\n(不是实际的换行符)的字符串中的换行符,但它也可以找到编码的转义换行符(\\n),就像下面字符串中的“任何东西”之前一样。

var rg = '/(\\n)/g'
var str = 'so you can do pretty much \\nanything you want with it. \n\nAt runtime Carota has'

我怎样才能找到所有的换行符而不是转义的换行符?

这是一个示例链接。 https://regexr.com/4fna7

【问题讨论】:

  • 试试/([\n])+?/g

标签: regex newline


【解决方案1】:

您可能想要消极的回顾。这用于查找文本后面的字符,但不将其包含在捕获中。 您重写的正则表达式如下所示:
(?<!\\)(\\n)

【讨论】:

    【解决方案2】:

    这样做的一种方法是从否定字符类开始,以确保您不会选择双反斜杠:

    var rg = '/[^\\](\\n)/g'
    var str = 'so you can do pretty much \\nanything you want with it. \n\nAt runtime Carota has'
    

    【讨论】:

      【解决方案3】:

      我假设您使用的是 JavaScript。在这种情况下,您可以像这样简单地使用Regex literals

      /\n/
      

      这将匹配所有换行符。如果你不能使用正则表达式,JS 还提供了一个构造函数,它接受一个字符串

      new RegExp('\\n')
      

      为了匹配\\n,您需要转义反斜杠:

      /\\n|\n/
      

      带有构造函数:

      new RegExp('\\\\n|\\n')
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-12-21
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        • 2011-06-29
        • 1970-01-01
        相关资源
        最近更新 更多