※ 引述《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
============================================