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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何對(duì)數(shù)字后綴進(jìn)行正則表達(dá)式?

如何對(duì)數(shù)字后綴進(jìn)行正則表達(dá)式?

慕森王 2021-10-19 16:59:34
我有以下正則表達(dá)式(示例在 Python 中):pattern = re.compile(r'^(([a-zA-Z0-9]*[a-zA-Z]+)([\d]+)|([\d]+))$')這可以正確解析任何具有數(shù)字后綴和可選的字母數(shù)字前綴的字符串:a123a2a123123All 將正確地123視為后綴。它將正確拒絕錯(cuò)誤的輸入:abc123abc()123  # Or other non-alphanumerics不過,正則表達(dá)式本身相當(dāng)笨拙,因此,一些捕獲組通常是空的,這意味著我必須執(zhí)行額外的步驟來過濾掉它們。我很好奇是否有比“數(shù)字或以字符結(jié)尾的字母數(shù)字開頭的數(shù)字”更好的方式來考慮這個(gè)正則表達(dá)式?
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以使用

^[A-Za-z0-9]*?([0-9]+)$

查看正則表達(dá)式演示

細(xì)節(jié)

  • ^ - 字符串的開始

  • [A-Za-z0-9]*?- 任何字母/數(shù)字,零次或多次,盡可能少(由于這種非貪婪匹配,下一個(gè)模式([0-9]+),將匹配字符串末尾的所有數(shù)字)

  • ([0-9]+) - 第 1 組:一位或多位數(shù)字

  • $ - 字符串的結(jié)尾。

在 Python 中:

m = re.search(r'^[A-Za-z0-9]*?([0-9]+)$') # Or, see below

# m = re.match(r'[A-Za-z0-9]*?([0-9]+)$') # re.match only searches at the start of the string

# m = re.fullmatch(r'[A-Za-z0-9]*?([0-9]+)') # Only in Python 3.x 

if m:

    print(m.group(1))


查看完整回答
反對(duì) 回復(fù) 2021-10-19
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您使用非捕獲組并正確管理重復(fù),問題就會(huì)自行緩解。

pattern = re.compile(r'^(?:[a-zA-Z0-9]*[a-zA-Z]+)?([0-9]+)$')

后綴只有一個(gè)捕獲組(組 1),并且沒有捕獲它之前的字母數(shù)字。

或者,使用命名組是另一種選擇,它通常使長(zhǎng)的、結(jié)構(gòu)化的正則表達(dá)式更容易維護(hù):

pattern = re.compile(r'^(?P<a>[a-zA-Z0-9]*[a-zA-Z]+)?(?P<suffix>[0-9]+)$')


查看完整回答
反對(duì) 回復(fù) 2021-10-19
  • 2 回答
  • 0 關(guān)注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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