3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
根據(jù)查找不以0
you 開頭的 7 位數(shù)字的標(biāo)題,可以使用:
(?<!\d)[1-9]\d{6}(?!\d)
請?jiān)诒荣愰_始時(shí)注意[1-9]
,然后再匹配接下來的 6 位數(shù)字,使其總數(shù)達(dá)到 7 位數(shù)字。
要使其匹配任何不以0
use 開頭的數(shù)字:
(?<!\d)[1-9]\d*(?!\d)

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
這將做到這一點(diǎn):^\D+(\d+)\s
在字符串的開頭^
,有任何非數(shù)字字符\D+
,后跟任意數(shù)量的數(shù)字\d+
,這些數(shù)字將被捕獲(\d+)
,并且后面需要跟一個(gè)空格\s
。
請參閱: https: //regex101.com/r/ZuGJ7l/1

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您要查找不以 0 開頭的數(shù)字,請使用[1-9]
第一個(gè)數(shù)字和\d
其余數(shù)字。
例如,要查找長度為 7 的(根據(jù)標(biāo)題),這將為您提供:
re.findall(r'(?<!\d)[1-9]\d{6}(?!\d)', s)
換句話說,一個(gè)非零數(shù)字后跟 6 位數(shù)字,整個(gè)數(shù)字之前或之后都沒有數(shù)字(根據(jù)負(fù)向前看和負(fù)向后看斷言),
對于您當(dāng)前的示例字符串將產(chǎn)生:
['3456789']
如果你想要長度不是7 的,你可以使用:
re.findall(r'(?<!\d)[1-9](?:\d{,5}|\d{7,})(?!\d)', s)
換句話說,一個(gè)非零數(shù)字后跟 <= 5 或 >= 7 位數(shù)字(即除 6 之外的任何數(shù)字),整個(gè)數(shù)字前面或后面都沒有數(shù)字,
這將給出:
['12345663333']
請注意,在第二種情況下,使用 來?:
確保括號內(nèi)的組是非捕獲組——這確保re.findall
將返回匹配的所有內(nèi)容,而不是括號的內(nèi)容。
添加回答
舉報(bào)