问题描述
更具体地说,我正在尝试实现这一目标。
例如:
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
屏幕截图(之前):
屏幕截图(之后):