【问题标题】:Regex to start new line at last whitespace before match正则表达式在匹配前的最后一个空格处开始新行
【发布时间】:2021-12-22 23:58:45
【问题描述】:

我正在为 Notepad++ 搜索一个正则表达式,以使其每行最多包含 35 个字符。

我想换行:

  • 在第 35 个字符之前的最后一个空白处
  • 如果缺少空格,则在第 35 个字符之前的最后一个点出现

如果没有任何空格或点,我不想开始新行。

示例文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur.sint.occaecat.cupidatat.non.proident,.sunt.in.culpa.qui.officia.deserunt.mollit.anim.id.est.laborum.

这个正则表达式匹配每一行直到第 35 个字符,但我不知道如何添加空格/点选择:

^.{0,35}

你能帮帮我吗?

谢谢

【问题讨论】:

  • 你试过^.{0,35}[\h.]/^.{0,34}[\h.]吗?
  • ^.{0,35}[\h.] 效果很好!现在我需要一个替换正则表达式在所选文本后添加\n

标签: regex string notepad++


【解决方案1】:

你可以使用

查找内容:    ^(?=.{35}).{0,35}[\h.]
替换为$0\n

详情

  • ^ - 行首
  • (?=.{35}) - 正向前瞻,需要 35 个字符(换行符除外)立即出现在当前位置的右侧
  • .{0,35} - 零到 35 个字符(换行符除外)
  • [\h.] - 水平空格或点。

替换模式是整个匹配 ($0) 加上换行符。

查看 Notepad++ 演示和设置:

【讨论】:

  • 如果一行已经少于 35 个字符,我不想开始新行,如何修复匹配模式?
  • @Ex。添加要求,该行必须至少 35 个字符长,^(?=.{35}).{0,35}[\h.]
猜你喜欢
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多