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

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

在 Python 中使用 Regex 提取準(zhǔn)確的單詞或字符集

在 Python 中使用 Regex 提取準(zhǔn)確的單詞或字符集

侃侃無極 2022-10-25 15:53:19
假設(shè)我有一個這樣的列表。List = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209'].我想搜索并返回“PO”所在的匹配項。從技術(shù)上講,我應(yīng)該將其RUC_PO-345作為我的輸出,但甚至RUC_POLO-209與RUC_PO-345.
查看完整描述

3 回答

?
楊魅力

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

更新前的問題:


根據(jù)我的評論,我認(rèn)為您使用了錯誤的方法。對我來說,您似乎可以簡單地使用in:


words = ['cat', 'caterpillar', 'monkey', 'monk', 'doggy', 'doggo', 'dog']

if 'cat' in words:

    print("yes")

else:

    print("no")

回報:yes


words = ['cats', 'caterpillar', 'monkey', 'monk', 'doggy', 'doggo', 'dog']

if 'cat' in words:

    print("yes")

else:

    print("no")

回報:no


更新問題后:


現(xiàn)在,如果您的示例數(shù)據(jù)實際上并未反映您的需求,但您有興趣在列表元素中查找子字符串,您可以嘗試:


import re

words = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209']

srch = 'PO'

r = re.compile(fr'(?<=_){srch}(?=-)')

print(list(filter(r.findall, words)))

或使用match:


import re

words = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209']

srch = 'PO'

r = re.compile(fr'^.*(?<=_){srch}(?=-).*$')

print(list(filter(r.match, words)))

['RUC_PO-345']這將返回遵循模式的項目列表(在本例中為 )。我使用上面的常規(guī)模式來確保您的搜索值不會在搜索字符串的開頭,而是在下劃線之后,然后是-.


現(xiàn)在,如果您有想要查找的產(chǎn)品列表,請考慮以下內(nèi)容:


import re

words = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209']

srch = ['PO', 'QW']

r = re.compile(fr'(?<=_)({"|".join(srch)})(?=-)')

print(list(filter(r.findall, words)))

或再次使用match:


import re

words = ['MX_QW-765', 'RUC_PO-345', 'RUC_POLO-209']

srch = ['PO', 'QW']

r = re.compile(fr'^.*(?<=_)({"|".join(srch)})(?=-).*$')

print(list(filter(r.match, words)))

兩者都會返回:['MX_QW-765', 'RUC_PO-345']


請注意,如果您不支持 f 字符串,您也可以將變量連接到模式中。


查看完整回答
反對 回復(fù) 2022-10-25
?
Cats萌萌

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

嘗試使用列表中的搜索詞構(gòu)建正則表達(dá)式替換:


words = ['cat', 'caterpillar', 'monkey', 'monk', 'doggy', 'doggo', 'dog']

your_text = 'I like cat, dog, rabbit, antelope, and monkey, but not giraffes'

regex = r'\b(?:' + '|'.join(words) + r')\b'

print(regex)

matches = re.findall(regex, your_text)

print(matches)

這打?。?/p>


\b(?:cat|caterpillar|monkey|monk|doggy|doggo|dog)\b

['cat', 'dog', 'monkey']

您可以清楚地看到我們?yōu)椴檎宜衅ヅ潢P(guān)鍵字而構(gòu)建的正則表達(dá)式替換。


查看完整回答
反對 回復(fù) 2022-10-25
?
墨色風(fēng)雨

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

圖案:


‘_PO[^\w]’

應(yīng)該使用 re.search() 或 re.findall() 調(diào)用;它不適用于 re.match 因為它不考慮字符串開頭的字符。


該模式為:匹配1 個下劃線('_') 后跟1 個大寫 P ('P')后跟 1 個大寫 O ('O') 后跟一個不是單詞字符的字符。特殊字符 '\w' 匹配[a-zA-Z0-9_].


‘_PO\W’

^ 這也可以用作建議的第一個模式的較短版本(在評論中注明@JvdV)


‘_PO[^A-Za-z]’

此模式使用“字符集而不是字母字符”。如果破折號干擾前兩種模式中的任何一種。


要使用它來識別列表中的模式,您可以使用循環(huán):


import re


For thing in my_list:

    if re.search(‘_PO[^\w]’, thing) is not None:

        # do something

        print(thing)

這將使用re.search調(diào)用將模式匹配為條件中的 Trueif條件。當(dāng) re 不匹配一個字符串時,它返回 None;if re.search() is not None因此...的語法


希望能幫助到你!


查看完整回答
反對 回復(fù) 2022-10-25
  • 3 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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