[回到版面]
回應模式
名 稱
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 175558 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

檔名:1543479416349.jpg-(147 KB, 719x1024)
147 KB
Python正則表達式問題無名18/11/29(四)16:16:56 ID:JDkgEQXkNo.12932del
請問島民
我想用regular expression判斷輸入字串格式符合「數字」與「數字+數字」
例如 r'2 3 5+1 7+3 8 11+2 13' 就符合規則。

而我設計的pattern如下:
r'\d+(\+\d+)?'

用python re.findall()預測結果應該是:
['2', '3', '5+1', '7+3', '8', '11+2', '13']

實際執行的結果卻是:
['', '', '+1', '+3', '', '+2', '']

總樣本數是正確的,但卻出現一堆empty match
這到底是怎麼回事呢?
無名18/11/29(四)21:46:36 ID:kPyZHkWsNo.12933del
括號
無名18/11/30(五)00:04:50 ID:6Wnt2eTINo.12934del
\s+
是不是少了空白字元?
看起來你是用空白來分隔數字的
無名18/12/04(二)18:20:26 ID:WkZWXAUwNo.12940del
>>12932
我照你打的pattern去濾
結果跟你的預測結果一樣啊
只是我是用C++跑的
無名18/12/06(四)01:51:41 ID:bCrUtwIUNo.12942del
https://regex101.com/
用這個測試也符合你的預期

你是不是特別抓了Group1的資料
無名18/12/09(日)01:04:02 ID:N/xpKSckNo.12943del
我是原PO
我使用python re.findall(rgex,string) 來抓出字串裡的各個子字串:
'2 3 5+1 7+3 8 11+2 13'

然後我嘗試了以下幾個pattern
r'\d+(\+\d+)?'
r'\d+(\+\d+){0,1}'
r'\d+(\+\d+|)'

結果都是:
['', '', '+1', '+3', '', '+2', '']

但是,當我用了以下的pattern後:
r'\d+\+\d+|\d+'
r'\d+(?:\+\d+|)'

不知道為什麼,結果就如同預期的給我分出這樣的結果:
['2', '3', '5+1', '7+3', '8', '11+2', '13']

目前變成搞不懂上面pattern抓字只抓小括弧裡面字串的目的了
無名18/12/09(日)13:29:53 ID:H9CPYz9kNo.12944del


【刪除文章】[]
刪除用密碼: