[英]Matching more than one word
我有以下短語,我想匹配它們:
“德拉索塔:您好”->“德拉索塔”
“ Guini:您好”->“ Guini”
“ Prat Gay:Hello”->“ Prat Gay”
我正在使用r"(\\w+):"
但它只匹配:
之前的最后一個單詞。
str.split(":")[0]
應該可以工作,其中str
是您要分割的字符串。
>>> str = "De la Sota: Hello"
>>> str.split(":")[0]
'De la Sota'
通過將字符串拆分為一個列表進行工作,其中參數是定界符。 如果將冒號指定為定界符,它將把字符串分成由冒號分隔的單個短語列表。 [0]
只是指列表的第一個值,這就是您想要的。
將\\ w +更改為。+或。*:
input_text = ''' De la Sota: Hello
Guini: Hello
Prat Gay: Hello'''
print(re.findall(r'(.+):',input_text)
"Prat Gay: Hello" -> "Prat Gay"
如果這正是您所擁有的,則可以使用否定集來消除:
, (使用
\\s
或如果使用\\t
是選項卡)和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
因為前者在整個字符串中查找,而后者僅與第一行匹配,並查看字符串是否以它開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.