我有一个希腊文本,每次有换行符时都用连字符。例如:
Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.
仅当插入换行符以便删除换行符并将换行符“\n”移动到非语法化单词的末尾时,我才需要查找字符“-”之间的单词边界。我的结果应该是这样的:
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.
我在python中使用正则表达式,我的命令是
re.findall(r'\b.*?-\n.*?\s', data, re.UNICODE)
在边界之间获取单词,但结果是:
Καλημέρα ο καιρός είναι απίστευτος σή-
μερα
不仅仅是这个词
σή-μερα
有人知道我做错了什么吗?希腊文字有问题吗?
您需要使用re。子功能。,
>>> s = '''Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.'''
>>> print(re.sub(r'-\n(\S+)\s+', r'\1\n', s))
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.
演示
\S
匹配一个或多个非空格字符,其中\S
匹配一个或多个空格字符<代码>re。sub功能将使用替换部件中的字符替换所有匹配字符。因此,这个r'-\n(\S)\S'
regex匹配连字符和后面的换行符以及后面的单词()
称为捕获组,用于捕获与捕获组中存在的模式匹配的字符。这里,捕获组中存在的模式是\S
。因此,它匹配并捕获新行字符后面的单词。通过指定替换部件的组索引号,可以在替换部件中引用捕获的字符。
您可以使用此正则表达式搜索:
\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)