每次换行存在时,我都会使用带连字符的希腊文字。例如:
Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.
我需要在角色" - "之间找到单词边界。只有插入换行符才能将其删除并移动换行符#34; \ n"在去异化词的最后。 我的结果应该是这样的:
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.
我在python中使用正则表达式,我的命令是
re.findall(r'\b.*?-\n.*?\s', data, re.UNICODE)
获取边界之间的字,但结果是:
Καλημέρα ο καιρός είναι απίστευτος σή-
μερα
而不只是单词
σή-μερα
有谁知道我做错了什么?希腊字符有问题吗?
答案 0 :(得分:4)
您需要使用re.sub
功能。,
>>> s = '''Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.'''
>>> print(re.sub(r'-\n(\S+)\s+', r'\1\n', s))
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.
\S+
匹配\s+
与一个或多个空格字符匹配的一个或多个非空格字符。 re.sub
函数将使用替换部件中存在的字符替换所有匹配的字符。因此,此r'-\n(\S+)\s+'
正则表达式匹配连字符和后续换行符以及该换行符后面的单词。 ()
称为捕获组,用于捕获与捕获组内存在的模式匹配的字符。这里捕获组内存在的模式是\S+
。因此它匹配以及捕获换行符后面的单词。您可以通过指定它的组索引号来引用替换部分中捕获的字符。
答案 1 :(得分:2)
您可以使用此正则表达式进行搜索:
\b(\w+)-\r?\n(\w+)\b
并替换为:
\1\2\n
<强>代码:强>
import re
p = re.compile(ur'\b(\w+)-\r?\n(\w+)\b', re.UNICODE)
result = re.sub(p, u"\1\2\n", input)