-4

如果它们被破折号分隔,什么正则表达式会抓住句子(代表语音)?问题是有时这样的句子被插入到正常的句子中,因此两边都用破折号隔开。但其他时候,它们用破折号打开,用句号关闭。更重要的是,破折号并不总是用于衬托口语句子。我需要捕捉的部分放在括号中(对不起,句子是立陶宛语)。

[- Dilze, -] šaukė ji be jokios intonacijos, pabrėžtinumo ar skubos, tarsi nesitikėdama atsakymo. [- Dilze!]
Dilzė atsakė ir liovės barškinusi rykais, stovinčiais ant krosnies, bet dar nespėio pereit per virtuvę, kai ponia Kompson pašaukė dar kartą, o kol ji perėjo per valgomąjį ir kyštelėjo galvą į tą pilką lango šviesą, - dar vieną kartą.
[- Einu, einu, -] atsakė Dilzė. [- Aš čia. Pripilsiu ją, kai tik vanduo sušils, -] pasikaišė sijoną ir ėmė kopti laiptais, visai užstodama tą pilką šviesą. [- Padėkit ją antžemės ir grįžkite į lovą.]
4

3 回答 3

1

在 Pythonre中不支持 Unicode 字符属性,但支持regex

regex.findall与图案一起使用

(?m)-\s*\p{Lu}.*?(?:-|[.,!?]\s*$)
于 2012-11-18T23:47:21.087 回答
-1

在带括号的情况下,我喜欢使用字符串操作而不是正则表达式。

>>> text = '''[- here is some text -] here is some not text [- that i want to get -]'''

>>> [sent.split('-]')[0] for sent in text.split('[-') if '-]' in sent]
[' here is some text ', ' that i want to get ']

text.split('[-')分割字符串[-。列表理解将这些结果输入到第二个拆分中,在对立的括号上拆分。请注意,如果您有“浮动”括号,这将不起作用,但如果您正在操作某人手动输入的标记,这是一个很好、便宜(正则表达式很昂贵)的解决方案。这样,您不必担心安装模块。

于 2012-11-19T01:34:10.240 回答
-1

据我了解,您正在寻找一个匹配任何以点可以是任何行结尾的开头[-和结尾的正则表达式。.]

正则表达式\[\-.*?[\-\.\!]\]执行此操作。该部分[\-\.\!]定义了所有可以作为结尾前缀的字符]。中间的问号确保正则表达式不是贪婪的,但如果这对您有用,它是特定于正则表达式实现的。

于 2012-11-18T23:48:50.707 回答