我想了解Python中這個正則表達式([0.00-9.00]+
)的用途。我明白這一點的方式是匹配0 . 0 0-9 . 0 0
,所以零點在這裏是多餘的。由於裏面有一個.
,它應該匹配任何字符,完整匹配應該是一個非空字符序列(不一定是數字),但它並不表示那樣。我錯過了什麼?在正則表達式中的方括號「[]」中的float range是什麼意思?
Few examples of how it behaves
我想了解Python中這個正則表達式([0.00-9.00]+
)的用途。我明白這一點的方式是匹配0 . 0 0-9 . 0 0
,所以零點在這裏是多餘的。由於裏面有一個.
,它應該匹配任何字符,完整匹配應該是一個非空字符序列(不一定是數字),但它並不表示那樣。我錯過了什麼?在正則表達式中的方括號「[]」中的float range是什麼意思?
Few examples of how it behaves
的零的確是多餘的。 .
只與文字.
相匹配,因爲它是字符類,[...]
語法的一部分。它在那裏沒有特別的意義。
所以字符類可以簡化爲:
[0-9.]+
,仍然匹配完全相同的投入。
該正則表達式文本的作者似乎已將具有數字範圍要素的字符類中的-
功能混淆;正則表達式中沒有這樣的事情。你必須匹配總體上可以看作實數的單個字符。下面將所匹配這樣的數字:
(?<!\d)\d\.\d\d(?!\d)
其中負向後看和向前看確保不會有更多周圍本文位數。 \d
是這裏的[0-9]
的簡寫。
這就解釋了它。感謝你的回答! –
不,字符範圍內的「。」不匹配「任何」字符,只是字面點。 –
https://regex101.com/r/BSZI6b/1 – deceze
另請參閱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 –