我有以下短语,我想与之匹配:
“De la Sota:你好” - > “De la Sota”
“Guini:你好” - > “Guini”
“Prat Gay:你好” - > “Prat Gay”
我正在使用r"(\w+):"
,但它只匹配:
之前的最后一个字。
答案 0 :(得分:2)
答案 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
因为前者在整个字符串中查找,后者只与第一行匹配,看看字符串是否以它开头。