簡體   English   中英

Python正則表達式不匹配

[英]Python regular expression not matching

這是我確定缺少簡單的東西之一,但是...在下面的示例程序中,我試圖使用Python的RE庫解析字符串“ line”以獲取浮點數百分號前的數字,即“ 90.31”。 但是代碼始終顯示“不匹配”。

我也嘗試了其他兩個正則表達式,所有結果都相同。 我想念什么?

#!/usr/bin/python
import re
line = '    0 repaired, 90.31% done'
pct_re = re.compile(' (\d+\.\d+)% done$')
#pct_re = re.compile(', (.+)% done$')
#pct_re = re.compile(' (\d+.*)% done$')
match = pct_re.match(line)
if match: print 'got match, pct=' + match.group(1)
else: print 'no match'

match僅從字符串開頭開始匹配。 如果您pct_re.search(line)則您的代碼可以正常工作。

您應該改用re.findall

>>> line = '    0 repaired, 90.31% done'
>>> 
>>> pattern = re.compile("\d+[.]\d+(?=%)")
>>> re.findall(pattern, line)
['90.31']

re.match將在字符串的開頭匹配。 因此,您需要為完整的字符串構建正則表達式。

如果您確實想使用match,請嘗試以下方法:

re.match(r'.*(\d+\.\d+)% done$', line)

r'...'是一個“原始”字符串,忽略了一些轉義序列,這是在python中與regexp一起使用的好習慣。 –克拉滕科(見下面的評論)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM