簡體   English   中英

Python正則表達式完全匹配

[英]Python regex for exact match

我想檢查我輸入的字符是否為{5,50}。 我使用以下代碼:

re.match('.{5,50}', my_string)

問題是,當字符串長度超過50個字符時,它不會返回None。 我該怎么辦?

在這種特定情況下,無需使用正則表達式。 代替

5 <= len(my_string) <= 50

足夠了。 如果您堅持使用正則表達式,請確保在字符串的開頭包含^ ,在結尾包含$

re.match(r'^.{5,50}$', my_string)

^在這里是可選的,因為re.matchre.search相反-總是在字符串開頭開始匹配。

如果用戶輸入的內容可以是ASCII以外的其他字符(例如u'เมื่อแรกเริ่ม'則用戶感知的字符串長度(9個泰語字符)可能與以字節為單位的字符串長度(由於組合字符而為13個字節)完全不同。 )

>>> s=u'เมื่อแรกเริ่ม'    # 9 graphems
>>> len(s)
13

有沒有即時的,因為集成了通過一個繩支架容易地解決了這個在Python 缺乏。

最簡單的方法是使用比python的re模塊具有更廣泛的unicode支持的regex模塊。 然后,您可以通過字素獲得字符串的長度:

>>> regex.findall(r'\X', s)
['เ', 'มื่', 'อ', 'แ', 'ร', 'ก', 'เ', 'ริ่', 'ม']
>>> len(regex.findall(r'\X', text))
9

暫無
暫無

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

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