【问题标题】:Notepad++ matchin end of line in regexpNotepad ++匹配正则表达式中的行尾
【发布时间】:2012-01-14 19:47:53
【问题描述】:

我想改造一下

a

b


b

进入这个

a
b
b

空行的数量是可变的,并且可能非常大。空行包含空格。我想使用像\r\n( *\r\n)+这样的正则表达式,但是notepad++似乎不喜欢正则表达式中的那些特殊字符,也试过\\r\\n( *\\r\\n)+

请注意,空行可能包含空格,因此正确的正则表达式应类似于 \\r\\n( *\\r\\n)+

【问题讨论】:

  • 我不知道Notepad++,但通常$代表行首,^代表行尾...
  • 伊利亚,正好相反。
  • 这不能直接在记事本中使用正则表达式,因为正则表达式仅限于一行(正则表达式引擎删除换行符),但您可以看到我的 answer here 或者当然是另一个这个问题的答案。
  • @Paolo:您应该在原始问题中提到那些空白行中有空格。

标签: regex notepad++


【解决方案1】:

您可以多次“全部替换”

\r\n\r\n -> \r\n

这是选择了“扩展”选项,而不是“正则表达式”。

如果空行包含空格,则首先使用正则表达式将所有行替换为只有空格而没有任何内容:^\s+$ -> ''。然后到上面的扩展替换。

或者:

您还可以将所有\r\n 替换为文档中不存在的某些字符序列,例如### 然后使用以下正则表达式替换:'###(\s*###)+' -> '###' 最后将序列 ('###') 替换为 \r\n

【讨论】:

  • 实际上“空”行包含空格。
  • 如果\r\n(\r\n)+ 不匹配,那么很可能\r\n\r\n 也不匹配。
  • 用空替换空格会用空格把所有行都搞砸,否则^\s+$ -> '' 会做
  • 绝对没有办法一次性做到这一点;这个答案是你能得到的最接近的答案。
  • @Paolo 的正则表达式选项确实有效,我刚刚测试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
相关资源
最近更新 更多