UNICODE 修飾符
UNICODE 修飾符,通常表示為 u
(PHP, Python)或 U
(Java),使得正規表示式引擎將模式和輸入字串視為 Unicode 字串和模式,使模式簡寫類如\w
,\d
,\s
等。支援 Unicode 的。
/\A\p{L}+\z/u
是一個 PHP 正規表示式,用於匹配由 1 個或多個 Unicode 字母組成的字串。請參閱正規表示式演示 。
請注意,在 PHP 中,/u
修飾符使 PCRE 引擎能夠將字串作為 UTF8 字串處理(通過開啟 PCRE_UTF8
動詞),並使用 Unicode 模式識別模式中的速記字元類(通過啟用 PCRE_UCP
動詞,請參閱 pcre.org 上的更多資訊 )。
**模式和主題字串被視為 UTF-8。**這個修飾符可以在 Unix 上從 PHP 4.1.0 或更高版本獲得,在 win32 上從 PHP 4.2.3 獲得。自 PHP 4.3.5 起,檢查模式和主題的 UTF-8 有效性。無效的主題將導致 preg_ *函式無匹配; 無效模式將觸發級別 E_WARNING 的錯誤。自 PHP 5.3.4 起,五和六個八位位元組的 UTF-8 序列被視為無效(分別為 PCRE 7.3 2007-08-28); 以前那些被認為是有效的 UTF-8。
在 Python 2.x 中, re.UNICODE
僅影響模式本身: 根據 Unicode 字元屬性資料庫生成\w
,\W
,\b
,\B
,\d
,\D
,\s
和\S
。
內聯版本:Python 中的 (?u)
,Java 中的 (?U)
。例如:
print(re.findall(ur"(?u)\w+", u"Dąb")) # [u'D\u0105b']
print(re.findall(r"\w+", u"Dąb")) # [u'D', u'b']
System.out.println("Dąb".matches("(?U)\\w+")); // true
System.out.println("Dąb".matches("\\w+")); // false