将所有换行符替换为不带有正则表达式的句点?

wim*_*rix 5 regex

是否可以使用正则表达式仅选择不在句点之前的换行符?我正在为学生编辑字幕文件.为了使打印版本死树友好,我试图用空格替换所有不带句号或问号的换行符.

选项1
选择所有不以句号[a-z]\n开头的换行符或者问号标记正则表达式适用于那个但当然它选择换行符之前单词的最后一个字母. - >是否有可能以某种方式保存并插入换行符之前的单词的最后一个字母,并使用正则表达式将其与空格一起插入或者我必须为其编写脚本(例如php)

选项2
仅选择以字符开头的换行符.我试着调查看后面.

在写这个问题时,解决方案给我打了 要在字符前面选择换行符(?<=[a-z])\n,然后用空格替换.

我搜索了堆栈溢出,无法找到我想要的东西.我希望我不会在同一时间发布问题和解决方案而冒犯任何人.它可能在将来帮助其他人.

Eri*_*ire 0

语法可能会有所不同,具体取决于您用来替换文本的内容(Java、Perl、PHP、sed、vi 等)。

在Java中你可以尝试这个:

str.replaceAll("([^\\.!?])\r?\n", "$1 ").replaceAll("  +", " ");
Run Code Online (Sandbox Code Playgroud)

在 Perl 中:

perl -p -e 's/([^\.!?])\n/\1 /g; s/  +/ /g;' file.txt
Run Code Online (Sandbox Code Playgroud)

您还可以阅读类似问题的答案:

如何使用 sed 替换换行符 (\n)?