2012-12-12 16 views
1

我正在關注正則表達式的教程。我在執行以下操作時遇到錯誤:Python中的基本正則表達式操作

regex = r'(+|-)?\d*\.?\d*' 

顯然,Python不喜歡(+ | - )。可能是什麼問題呢?
此外,在正則表達式之前不添加r會有什麼問題?

回答

3

你需要逃避+正則表達式得到一個字面+,因爲它通常是指「東西一個或多個實例」:

regex = r'(\+|-)?\d*\.?\d*' 

而且r使它成爲一個「原始」的字符串。沒有r,正則表達式轉義序列將被解釋爲字符串轉義序列,並且它們會導致各種問題。 (\b是一個退格而不是文字邊界,以及那種事情)。

3

+是一個特殊字符。您可以使用括號來指定字符的範圍,這比使用更好的「或者」在這種情況下:

regex = r'([+-])?\d*\.?\d*' 

否則管道符,你只需要逃避在原始版本:

regex = r'(\+|-)?\d*\.?\d*' 

使用r是指定在python一個正則表達式的字符串,因爲它指示原始字符串,其不應被解釋並減少逸出必須使用反斜槓執行的量的優選方式。這只是一個你將會看到的python正則表達式。

r'(\+|-)?\d*\.?\d*' 
#'(\\+|-)?\\d*\\.?\\d*'