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

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

正則表達(dá)式不會(huì)分隔最后一個(gè)字符串

正則表達(dá)式不會(huì)分隔最后一個(gè)字符串

牧羊人nacy 2021-05-06 10:11:16
我做了一個(gè)正則表達(dá)式,應(yīng)該能夠從html文件中分離出數(shù)字的特定順序,但是在最后一部分中它不起作用。因此,這是html文件打印出來的方式:0430\n0500 20 40 53\n0606 19 32 45 58\n0711 22 33 44 55 \n...2000 20 40\n2100 20 40\n2200 20 40\n2300 20 40\n0000\n\n這是我的正則表達(dá)式:timeRegex = re.compile(r'''((\d\d)(\d\d)(\n|(\s(\d\d)\s?(\d\d)?\s?(\d\d)?\s?(\d\d)?\s?(\d\d)?)\n)?)''',re.VERBOSE|re.DOTALL)當(dāng)查看列表時(shí),它在大多數(shù)情況下都可以正常工作,直到列表中的最后一個(gè)元素獲得0000為止,所以它看起來像這樣的“ 2300 20 40 \ n0000 \ n \ n”,請(qǐng)幫忙。
查看完整描述

2 回答

?
繁星coding

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

當(dāng)涉及到輸入的這一部分時(shí):

2300 20 40\n
0000\n

它匹配如下:

  • (\d\d)(\d\d) 火柴 2300

  • \s 匹配空間

  • (\d\d) 火柴 20

  • \s? 匹配空間

  • (\d\d)? 火柴 40

  • \s? 匹配換行符

  • (\d\d)? 火柴 00

  • \s? 不匹配,因?yàn)樗强蛇x的

  • (\d\d)? 火柴 00

  • \s? (\d\d)? 什么都不匹配,因?yàn)樗鼈兌际强蛇x的

  • \n 匹配換行符

我懷疑您沒有意識(shí)到可以\s匹配任何形式的空白,包括換行符。如果要在冗長(zhǎng)的正則表達(dá)式中按字面值匹配空格,請(qǐng)?jiān)诳崭袂凹由戏葱备?。所以大多?shù)\s?應(yīng)該是\ ?


查看完整回答
反對(duì) 回復(fù) 2021-05-11
?
www說

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

原因是雙重的:

  1. \s 匹配所有空格,換行符和空格;

  2. 正如@WiktorStribi?ew已經(jīng)說過的,它也\s?匹配零個(gè)空格。

因此,發(fā)生的情況是您\s?的其中一個(gè)在換行符后吃了換行符2300 20 40,而下一個(gè)\s?匹配了中間的缺失空格0000。您看不到其他地方發(fā)生的問題,因?yàn)槟?code>\s?(\d\d)?了一個(gè)就可以覆蓋兩條實(shí)線。向正則表達(dá)式再添加一個(gè),您將看到以下行

2000 20 40\n

2100 20 40\n

內(nèi)爆了。


我不確定您要如何解析此文件,但要逐行從代碼中判斷。如果是這樣,則“顯式優(yōu)于隱式”:


time_regex = re.compile(r'^(\d{4})(\s\d{2})*$')

with open(...) as inf:

    for line in inf:

        m = time_regex.match(line)

        # Use m.group(1) and m.group(2).split()


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

添加回答

舉報(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)