如何用Notepad++正则表达式标记指定分隔行前的最后非空行?
Notepad++正则表达式解决方案
原正则的问题点
- 匹配规则过严:
^.+\S.+要求行内必须包含非空白字符且前后还有其他内容,像示例中的Q1这种仅含简单内容的非空行无法被匹配,规则限制太死。 - 未处理分隔行前的空行:示例里分隔行前存在空行,原正则没考虑跳过这些空行,导致无法定位到真正的目标行。
- 分隔行匹配错误:原正则写的
^/{23}/多了一个末尾的/,实际分隔行是23个连续的/,应该匹配^/{23}$。
修正后的正则表达式
^(?!\s*$).+(?=(?:\R\s*)*\R/{23}$)
使用说明
- 在Notepad++中打开查找替换窗口(快捷键
Ctrl+H)。 - 切换到正则表达式模式,无需勾选「匹配换行符」(这里用
\R匹配任意换行符)。 - 将上述正则粘贴到「查找目标」框中,即可选中所有符合要求的行。
正则逻辑解释
^(?!\s*$):过滤掉空行(包括全是空白字符的行),确保只匹配非空行。.+:匹配当前非空行的所有内容。(?=(?:\R\s*)*\R/{23}$):正向预查,确保当前行之后,经过任意数量的空行((?:\R\s*)*)后,紧跟着一行是23个/的分隔行。
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

