亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何在Python中正則表達式字符串中長度為7但數字不以0開頭的數字?

如何在Python中正則表達式字符串中長度為7但數字不以0開頭的數字?

莫回無 2023-10-18 22:05:26
我有一個像這樣的字符串:s = "Abc 3456789 cbd 0045678 def 12345663333"print(re.findall(r"(?<!\d)\d{7}(?!\d)", s))Ouput is : 3456789  and 0045678但我只想得到 3456789。我該怎么做呢?
查看完整描述

3 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

根據查找不以0you 開頭的 7 位數字的標題,可以使用:

(?<!\d)[1-9]\d{6}(?!\d)

請在比賽開始時注意[1-9],然后再匹配接下來的 6 位數字,使其總數達到 7 位數字。

正則表達式演示

要使其匹配任何不以0use 開頭的數字:

(?<!\d)[1-9]\d*(?!\d)


查看完整回答
反對 回復 2023-10-18
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

這將做到這一點:^\D+(\d+)\s

在字符串的開頭^,有任何非數字字符\D+,后跟任意數量的數字\d+,這些數字將被捕獲(\d+),并且后面需要跟一個空格\s。

請參閱: https: //regex101.com/r/ZuGJ7l/1


查看完整回答
反對 回復 2023-10-18
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

如果您要查找不以 0 開頭的數字,請使用[1-9]第一個數字和\d其余數字。

例如,要查找長度為 7 的(根據標題),這將為您提供:

re.findall(r'(?<!\d)[1-9]\d{6}(?!\d)', s)

換句話說,一個非零數字后跟 6 位數字,整個數字之前或之后都沒有數字(根據負向前看和負向后看斷言),

對于您當前的示例字符串將產生:

['3456789']

如果你想要長度不是7 的,你可以使用:

re.findall(r'(?<!\d)[1-9](?:\d{,5}|\d{7,})(?!\d)', s)

換句話說,一個非零數字后跟 <= 5 或 >= 7 位數字(即除 6 之外的任何數字),整個數字前面或后面都沒有數字,

這將給出:

['12345663333']

請注意,在第二種情況下,使用 來?:確保括號內的組是非捕獲組——這確保re.findall將返回匹配的所有內容,而不是括號的內容。


查看完整回答
反對 回復 2023-10-18
  • 3 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號