Regex 试图在记事本++;匹配特定图案并替换它

Regex 试图在记事本++;匹配特定图案并替换它,regex,notepad++,Regex,Notepad++,我正在尝试本地化补丁的翻译文件;我的打包程序要求文本以某种方式格式化,以使其修补程序正常工作 5000多行文本文件以不同的文本块格式化,如: Sentence Sentence Sentence Sentence Sentence Sentence Sentence 他需要输出数据 sentence\nsentence sentence\nsentence\nsentence sentence sentence 我尝试使用[.+\n.+]替换为[$2”\n“$1],但它似乎与所有

我正在尝试本地化补丁的翻译文件;我的打包程序要求文本以某种方式格式化,以使其修补程序正常工作

5000多行文本文件以不同的文本块格式化,如:

Sentence
Sentence

Sentence
Sentence
Sentence

Sentence

Sentence
他需要输出数据

sentence\nsentence

sentence\nsentence\nsentence

sentence

sentence

我尝试使用[.+\n.+]替换为[$2”\n“$1],但它似乎与所有内容都匹配。

只需尝试以下模式:

.\n.
并将其替换为:

\\
  • 匹配任何字符(换行符除外)
  • \n
    匹配换行符(换行符)
  • g
    修改器:
    全局。所有比赛(第一场比赛不返回)
适用于我(在具有Dos格式的Windows上
\r\n
;在Unix中,仅在“查找内容”中需要
\n

查找内容:
(.)\r\n(.)
用于Dos格式设置

查找内容:
(.)\n(.)
用于Unix格式设置

--或--

查找内容:
(.)\R(.)
通用(多亏了Wiktor Stribiżew,我才不知道这个技巧)

替换为:
$1\\n$2

确保
。未启用匹配换行符。

窗口?使用以下命令:

搜索:

([^\r\n])\r\n([^\r\n])
替换:

$1\n$2

打开“替换”对话框:

  • 查找内容:
    (.)\r\n(.)
  • 替换为:
    \1\\n\2
  • 检查正则表达式
  • 单击“全部替换”

为什么要捕获组?你可以这么简单:@Shafizadeh可能是perl或awk,但我不是Notepad++。我会用
([^\r\n])\r([^\r\n])
替换为
$1\\n$2
,因为我们不知道你有什么断线。@WiktorStribiżew我不明白,为什么要捕获组?是不是错了?@Shafizadeh:你正在匹配和使用换行前后的字符,所以当你替换时,这些字符将被删除。请注意,
与记事本++中的
\r
不匹配。因此,如果换行符是CRLF,您的正则表达式将找不到任何内容。另外,不要在Notepad++中使用正则表达式分隔符,它没有使用任何正则表达式分隔符(它使用的是Boost库)@WiktorStribiżew我明白了,只有一件事,
g
修饰符在Notpad++上被激活?有一个“全部替换”按钮。在Nodepad++中,你在哪里为正则表达式添加g修饰符?