簡體   English   中英

匹配多個單詞

[英]Matching more than one word

我有以下短語,我想匹配它們:

“德拉索塔:您好”->“德拉索塔”

“ Guini:您好”->“ Guini”

“ Prat Gay:Hello”->“ Prat Gay”

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

只需使用以下模式:

/^(.*):/gm

現在$1包含了您所需要的。

在線演示

注意,我很確定有比regex更好的方法。 但我不是python專家。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM