匹配多个单词

时间:2016-06-03 17:59:13

标签: python regex

我有以下短语,我想与之匹配:

  

“De la Sota:你好” - > “De la Sota”

     

“Guini:你好” - > “Guini”

     

“Prat Gay:你好” - > “Prat Gay”

我正在使用r"(\w+):",但它只匹配:之前的最后一个字。

4 个答案:

答案 0 :(得分:2)

只需使用此模式:

/^(.*):/gm

现在$1包含您需要的内容。

Online Demo

注意到我非常确定有一种比正则表达式更好的方法。但我不是蟒蛇专家。

答案 1 :(得分:2)

str.split(":")[0]应该可以使用,str是您想要拆分的字符串。

>>> str = "De la Sota: Hello" 
>>> str.split(":")[0]
'De la Sota'

这可以通过将字符串拆分为一个列表来实现,其中参数是分隔符。如果将冒号指定为分隔符,它会将字符串拆分为由冒号分隔的单个短语列表。 [0]只是引用列表的第一个值,这就是你想要的。

答案 2 :(得分:0)

将\ w +更改为。+或。*:

input_text = ''' De la Sota: Hello

Guini: Hello

Prat Gay: Hello'''

print(re.findall(r'(.+):',input_text)

答案 3 :(得分:0)

:

如果这正是您所拥有的,您可以使用否定集来摆脱\s(使用\t - 或者如果它是使用{{1和Helo,因为它是一个集合。至于名称,一些姓氏包含-我们需要多次出现一个字符(\w)才能命名:

import re
string = ''' De la Sota: Hello

Guini: Hello

Prat Gay: Hello
'''
print(re.findall(r'[-\w ]+[^:\sHelo]', string))

给出以下答案:

[' De la Sota', 'Guini', 'Prat Gay']

你应该使用re.findall而不是re.match因为前者在整个字符串中查找,后者只与第一行匹配,看看字符串是否以它开头。