2016-10-11 83 views
-1

我想了解Python中這個正則表達式([0.00-9.00]+)的用途。我明白這一點的方式是匹配0 . 0 0-9 . 0 0,所以零點在這裏是多餘的。由於裏面有一個.,它應該匹配任何字符,完整匹配應該是一個非空字符序列(不一定是數字),但它並不表示那樣。我錯過了什麼?在正則表達式中的方括號「[]」中的float range是什麼意思?

Few examples of how it behaves

+1

不,字符範圍內的「。」不匹配「任何」字符,只是字面點。 –

+1

https://regex101.com/r/BSZI6b/1 – deceze

+1

另請參閱http://stackoverflow.com/questions/19976018/does-a-dot-have-to-be-escaped-in-a-character- class-square-brackets-of-a-regula和http://stackoverflow.com/questions/21929693/decyphering-a-simple-regex/21929764#21929764 –

回答

6

的零的確是多餘的。 .只與文字.相匹配,因爲它是字符類[...]語法的一部分。它在那裏沒有特別的意義。

所以字符類可以簡化爲:

[0-9.]+ 

,仍然匹配完全相同的投入。

該正則表達式文本的作者似乎已將具有數字範圍要素的字符類中的-功能混淆;正則表達式中沒有這樣的事情。你必須匹配總體上可以看作實數的單個字符。下面將所匹配這樣的數字:

(?<!\d)\d\.\d\d(?!\d) 

其中負向後看和向前看確保不會有更多周圍本文位數。 \d是這裏的[0-9]的簡寫。

請參閱this regex101 demo

+0

這就解釋了它。感謝你的回答! –

相關問題