第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達(dá)式以匹配字符串中可能的名稱

正則表達(dá)式以匹配字符串中可能的名稱

慕斯709654 2021-03-12 06:07:52
我想從字符串中匹配可能的名稱。名稱應(yīng)為2-4個單詞,每個單詞包含3個或更多字母,所有單詞均大寫。例如,給定以下字符串列表:Her name is Emily.I work for Surya Soft.I sent an email for Ery Wulandari.Welcome to the Link Building Partner program!我想要一個返回的正則表達(dá)式:NoneSurya SoftEry WulandariLink Building Partner目前這是我的代碼:data = [   'Her name is Emily.',    'I work for Surya Soft.',    'I sent an email for Ery Wulandari.',    'Welcome to the Link Building Partner program!']for line in data:    print re.findall('(?:[A-Z][a-z0-9]{2,}\s+[A-Z][a-z0-9]{2,})', line)它適用于前三行,但不適用于最后一行。
查看完整描述

3 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊

您可以使用:

re.findall(r'((?:[A-Z]\w{2,}\s*){2,4})', line)

它可能會添加一個尾隨空格,可以用 .strip()


查看完整回答
反對 回復(fù) 2021-03-30
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊

非正則表達(dá)式解決方案:


from string import punctuation as punc

def solve(strs):

   words = [[]]

   for i,x in enumerate(strs.split()):

      x = x.strip(punc)

      if x[0].isupper() and len(x)>2:

         if words[-1] and words[-1][-1][0] == i-1:

            words[-1].append((i,x))

         else:

            words.append([(i,x)])


   names = [" ".join(y[1] for y in x) for x in words if 2 <= len(x) <= 4]

   return ", ".join(names) if names else None



data = [

   'Her name is Emily.', 

   'I work for Surya Soft.', 

   'I sent an email for Ery Wulandari.', 

   'Welcome to the Link Building Partner abc Fooo Foo program!'

]

for x in data:

   print solve(x)

輸出:


None

Surya Soft

Ery Wulandari

Link Building Partner, Fooo Foo


查看完整回答
反對 回復(fù) 2021-03-30
  • 3 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號