[英]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.match
與re.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.