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