在希腊文中找到所有带连字符的单词

时间:2015-04-08 13:30:21

标签: python regex

每次换行存在时,我都会使用带连字符的希腊文字。例如:

Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.

我需要在角色" - "之间找到单词边界。只有插入换行符才能将其删除并移动换行符#34; \ n"在去异化词的最后。 我的结果应该是这样的:

Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.

我在python中使用正则表达式,我的命令是

re.findall(r'\b.*?-\n.*?\s', data, re.UNICODE)

获取边界之间的字,但结果是:

Καλημέρα ο καιρός είναι απίστευτος σή-
μερα

而不只是单词

σή-μερα

有谁知道我做错了什么?希腊字符有问题吗?

2 个答案:

答案 0 :(得分:4)

您需要使用re.sub功能。,

>>> s = '''Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.'''
>>> print(re.sub(r'-\n(\S+)\s+', r'\1\n', s))
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.

DEMO

\S+匹配\s+与一个或多个空格字符匹配的一个或多个非空格字符。 re.sub函数将使用替换部件中存在的字符替换所有匹配的字符。因此,此r'-\n(\S+)\s+'正则表达式匹配连字符和后续换行符以及该换行符后面的单词。 ()称为捕获组,用于捕获与捕获组内存在的模式匹配的字符。这里捕获组内存在的模式是\S+。因此它匹配以及捕获换行符后面的单词。您可以通过指定它的组索引号来引用替换部分中捕获的字符。

答案 1 :(得分:2)

您可以使用此正则表达式进行搜索:

\b(\w+)-\r?\n(\w+)\b

并替换为:

\1\2\n

RegEx Demo

<强>代码:

import re
p = re.compile(ur'\b(\w+)-\r?\n(\w+)\b', re.UNICODE)

result = re.sub(p, u"\1\2\n", input)