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