2017-05-23 45 views
-1

嗨,我有以下字符串:Python和正則表達式不能在字符串找到序列

t = '<td align="right" class="ofGridLinesTop" headers="amount" sortvalue="2633.33" valign="top">\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\t$2,633.33\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t</td>' 

我知道下面的正則表達式序列正確識別我想要的字符串的一部分(sortvalue =「2633.33」)

\bsortvalue=.\b\d+.\d+. 

然而,當我使用下面的語句:

Amt = re.findall('\bsortvalue=.\b\d+.\d+.',t) 

我拿出空。任何想法爲什麼?

+0

嘗試'R '\ bsortvalue = 「(\ d + \ \ d +。)」''代替。 –

+0

這個正則表達式怎麼樣''(sortvalue)(=)(「。*?」)''? –

回答

1

使用此:

Amt = re.findall('\\bsortvalue=.\\b\d+.\d+.',t) 

或該:

Amt = re.findall(r'\bsortvalue=.\b\d+.\d+.',t) 

參見this question

+0

正確的答案,但應解釋;你不會在'\ b'等中轉義反斜槓,所以你實際上用這些轉義代碼代替了你想要的(即\ b是退格)。要解決這個問題,你可以使用'\\ b'來反轉反斜槓,或者在Horcrux的第二個例子中用'r'作爲前綴來創建一個原始字符串,這個例子本質上是一個字符串,因此忽略轉義字符。 – Dillanm

相關問題