将两个正则表达式公式合并为一个(使用 notepad++)

将两个正则表达式公式合并为一个(使用 notepad++)
Si cum îi semănau ! Fraţi buni, puindu-si, ca si el, tot sufletul 
în ceea ce făceau, muncind din greu, luptind din greu, jert- 
findu-se, fără nici un gînd de răsplată.

Simțind în tot ceasul, 
asupra destinului lor, o poruncă ce vine mai de departe Si 
poruncește mai straşnic decît cea pe care le-o strigă împre- 
jurarile. În fata îngrozitoarei tragedii a războiului, un pictor 
nou se destepta în Grigorescu.

必须成为:

Şi cum îi semănau ! Fraţi buni, puindu-si, ca si el, tot sufletul în ceea ce făceau, muncind din greu, luptind din greu, jertfindu-se, fără nici un gînd de răsplată.

Simțind în tot ceasul, asupra destinului lor, o poruncă ce vine mai de departe Si poruncește mai straşnic decît cea pe care le-o strigă împrejurarile. În fata îngrozitoarei tragedii a războiului, un pictor nou se destepta în Grigorescu.

为此,我现在使用两个正则表达式公式:

寻找:-\s+

替换为:(leave empty)

寻找:\n\s+

替换为:(leave empty)

尤其要注意的是,有些行的末尾会有如下内容:“jert- findu-se”,这意味着单词被分成两个。这类单词必须连接在一起,但不能有连字符,如下所示:“jertfindu-se”

如何将两个正则表达式公式合并为一个,以获得相同的结果?

我尝试了这样的组合,但效果不太好:

寻找: (-\s+)|\1|(?=(\n\s+))|\2

或者

寻找: [\n-](\s+)|(\s+)|\1|\2

答案1

  • Ctrl+H
  • 找什么:(?<!\n)(?:-\h*)?\R(?!\R)
  • 用。。。来代替:LEAVE EMPTY
  • 打钩 环绕
  • 选择 正则表达式
  • Replace all

解释:

(?<!\n)     # negative lookbehind, make sure we haven't a linebreak before
(?:         # non capture group
    -           # hyphen
    \h*         # 0 or more horizontal spaces
)?          # end group, optional
\R          # any kind of linebreak
(?!\R)      # negative lookahead, make sure we haven't linebreak after

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容