如何解决如何使用正则表达式搜索和替换换行符?
更具体地说,我正在尝试实现这一目标。
例如:
Hello. Welcome to stackoverflow!
This is for testing purpose only.
So let's get started!
Good job. See you tomorrow.
Hello. Welcome to stackoverflow!
This is for testing purpose only.
So let's get started!
Good job. See you tomorrow.
但是如果我使用\n\n
正则表达式搜索并将其全部替换为\n
,则结果是:
Hello. Welcome to stackoverflow!
This is for testing purpose only.
So let's get started!
Good job. See you tomorrow.
问题是在Hello ...和...之间有两个与该正则表达式匹配的结果,因此它在那里替换了两次。
我想做的是,无论有多少行,我只想删除一行。
哇,我应该做到这一点吗?
解决方法
您可以使用lookbehind:
(?<=\.|!)\n
,什么也不要替换。这样只会删除\n
或.
之后的!
。
或者,您也可以使用前瞻:
\n(?=\w)
这匹配任何\n
,后跟字母,数字或下划线。
全部删除:
(?<!\n)\n
请参见live demo。
或者,如果您的工具/语言不支持后向搜索,请全部替换:
([^\n])\n
具有捕获的组1,具体取决于您的工具/语言是$1
或\1
。
- Ctrl + H
- 查找内容:
\R(\R+)
- 替换为:
$1
- 检查 环绕
- 检查 正则表达式
- 全部替换
说明:
\R # any kind of linebreak (i.e. \r,\n,\r\n)
(\R+) # group 1,1 or more linebreak
替换:
$1 # content of group 1
屏幕截图(之前):
屏幕截图(之后):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。