如何将 Python 和 Notepad++ 中的连字符单词与带有异常模式的正则表达式结合起来?

Posted

技术标签:

【中文标题】如何将 Python 和 Notepad++ 中的连字符单词与带有异常模式的正则表达式结合起来?【英文标题】:How to unite hyphenated words in Python and Notepad++ with regex with patterns for exceptions? 【发布时间】:2022-01-22 23:42:14 【问题描述】:

我想知道您是否可以帮助我改进 ([^\s\d])(-\s+) (replacement: $1) 正则表达式,以便它可以执行以下操作:

    如果连字符后面的字母是小写字母,它应该只连接连字符。这意味着分割词的第二部分不能以大写字母、标点符号、括号、符号或数字开头。

    它不应该在分割词的第二部分是“és”(和)或“tér”(方格)的情况下合并连字符。每个单词后面都有一个空格。

我想在 Notepad++ 和 Python 中使用修改后的正则表达式。在使用 Python 的应用程序中,我只能有一个单行正则表达式(用逗号分隔),例如 ([^\s\d])(-\s+),\1

示例 - 应用正则表达式后,以下文本应保持不变。

 Nyugat- Németország kormánya
 Text text text Kelet-
 Európa
 Text text text Valéria-
 tér sarok.
 érettségi után a Színház- és 
 Filmművészeti Főiskolára járt
 text text text elválaszt-
 (this is due to OCR errors)
 2001-ben
 8-10
 Szükséges-e

应该匹配的示例: 原始 OCR 编辑的报纸文本:

Minden demokrata erőnek közö-
sen kell fellépnie és „falat húznia" 
a Jobbik elé - mondta Ke-
rék-Bánczy Szabolcs, az MDF el-
nökségi tagja keddi sajtótájékoz-
tatóján. Kerék-Bárczy közölte: mi-
közben politikai konszenzus ala-
kult ki a magyar parlamenti pár-
tok között a szlovák nyelvtör-
vénnyel kapcsolatban, pozícióikat 
súlyosan rombolja a Jobbik tevé-
kenysége. Ezt azzal magyarázta, 
hogy a Jobbik állandó hivatkozási 
alapot biztosít a szlovákiai kor-
mánypártoknak. hogy folyamato-
san ujjal mutogathassanak Ma-
gyarországra, mert itt is van egy 
EP-képviselettel rendelkező cso-
port, amely mások kirekesztésére 
és az irredentizmusra építi politi-
káját. Az MDF ezért kezdeménye-
zi, hogy az EP-képviselők nyilvá-
nítsák ki...

应用正则表达式后:

Minden demokrata erőnek közösen kell fellépnie és „falat húznia" 
a Jobbik elé - mondta Kerék-Bánczy Szabolcs, az MDF elnökségi tagja 
keddi sajtótájékoztatóján. Kerék-Bárczy közölte: miközben politikai 
konszenzus alakult ki a magyar parlamenti pártok között a szlovák 
nyelvtörvénnyel kapcsolatban, pozícióikat súlyosan rombolja a 
Jobbik tevékenysége. Ezt azzal magyarázta, 
hogy a Jobbik állandó hivatkozási 
alapot biztosít a szlovákiai kormánypártoknak. hogy folyamatosan 
ujjal mutogathassanak Magyarországra, mert itt is van egy
EP-képviselettel rendelkező csoport, amely mások kirekesztésére 
és az irredentizmusra építi politikáját. Az MDF ezért kezdeményezi, 
hogy az EP-képviselők nyilvánítsák ki...

【问题讨论】:

那么,您尝试的模式是什么?是([^\s\d])(-\s+)吗?它有什么问题? 为什么最后一个Szükséges-e不变? 但是- 后面有一个小写字符,后面没有éstér。这可以跨越多行吗?除了最后一个 ([^\s\d])-(?=[a-z])(?!\S*(?:és|tér) ) regex101.com/r/lZG6Xg/1 之外,这将进行替换 ([^\W\d_])-\s+(?=(?!(?:és|tér)\b)[a-zàâäôéèëêïîçùûüÿæœ]) 怎么样?见regex demo。 那么,my regex 不符合您的需要吗? 【参考方案1】:

你可以使用

([^\W\d_])-\s+(?=(?!(?:és|tér)\b)[a-záéőúüűöóí])

请参阅regex demo。 详情

([^\W\d_]) - 任意一个字母 - - 一个连字符 \s+ - 一个或多个空格 (?=(?!(?:és|tér)\b)[a-záéőúüűöóí]) - 一个积极的前瞻,需要(立即在当前位置的右侧): (?!(?:és|tér)\b)[a-záéőúüűöóí] - 来自a-záéőúüűöóí 集中的任何字符,它不是éstér 字符序列的起始字母,紧跟在单词边界位置之后。

【讨论】:

以上是关于如何将 Python 和 Notepad++ 中的连字符单词与带有异常模式的正则表达式结合起来?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?

如何配置notepad++的界面

Python用notepad编程设置

请问notepad++如何将换行替换成其它符号?

Notepad ++:如何配置Notepad ++ DBGp(代码调试插件)以与PYTHON一起使用?

如何使用Notepad++和GCC搭建Windows下的C语言学习环境