【问题标题】:Match all instances of \r\n, except that occurring before the very end of the document [duplicate]匹配 \r\n 的所有实例,但出现在文档末尾之前的除外 [重复]
【发布时间】:2019-12-27 04:29:03
【问题描述】:

使用preg_replace,我需要定义正则表达式PATTERN 以完全匹配换行符序列\r\n 的所有实例,除了出现在文本末尾的情况。

preg_replace(PATTERN,'"\r\n"',$text)

在这种情况下如何指定 PATTERN?

【问题讨论】:

    标签: php regex line-breaks carriage-return linefeed


    【解决方案1】:

    为行尾添加负前瞻:

    preg_replace('/\r\n(?!$)/','"\r\n"',$text)
    

    Demo on 3v4l.org

    请注意,如果您没有特定要求匹配\r\n,您可以使用\R,它将匹配任何换行符序列。

    【讨论】:

    • 哦,我明白了 - 但在我的情况下,它应该严格地是 \r\n (DOS) 而不是任何其他类型的换行符序列,例如 \n (Unix)
    • @ptrcao 好的,忽略关于\R 的评论。查看我的编辑
    • 实际上,我发现关于 \R 的评论非常有用,我已经记下了它 - 您可能应该将该评论添加回答案中作为旁白,这可能是有用的事实未来的读者
    • @ptrcao 好点。我已经加回来了。 :-)
    • 为什么在regex101.com 中输入\r\n(?!$) 不能选择它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2020-06-12
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多