Re: [問題] 正規表達式 有好方法表達 非數字的字母嗎

作者: realtemper (聞雞起舞發憤圖強)   2016-03-07 13:04:19
※ 引述《opengood5566 ( )》之銘言:
: 正規表達式
: \w代表著字母和數字和_
: \d代表數字
: 但如果要表達非數字的字母 可以[a-zA-Z] 但總覺得不簡潔
: 請問有比較好的表達 非數字的字母嗎?
: 感謝
騙些p幣
ascii 字串的話是可以 [^\W\d_] (NOT non-word, digit or underscore)
但沒有比較簡潔
而且 NOT 算子的效率疑似較差
至於如果字串是 unicode 而且你的 python 是 3.x 的話
那還是乖乖用 [a-zA-Z] 吧
因為 python 3 預設支援 unicode
包括 re 模組也是
所以 \w 也會 match 到 unicode 字元
測試範例如下(python 3.4 @ win7 x64 eclipse PyDev)
============================================
import re
str_test = "a1_B2_測試"
a = re.compile(r"[a-zA-Z]")
print(a.sub("X", str_test)) # X1_X2_測試
b = re.compile(r"[^\W\d_]")
print(b.sub("X", str_test)) # X1_X2_XX
============================================
作者: duckfly (Java ass)   2016-03-07 15:44:00
r"(?i)[a-z]"

Links booklink

Contact Us: admin [ a t ] ucptt.com