我需要拆分既不是\p{L}
也不是-
的字符。我有点困惑。 \P{L}|[^-]
显然无效,因为所有内容都与[^-]
匹配。我不知道如何在[]
内放置一个Unicode类。 Lookahead / lookbehind将锁定前一个/后一个字符。
换句话说,我需要将foo-bar;dásh
拆分为['foo-bar', 'dásh']
。
答案 0 :(得分:3)
只需使用一个negated character class:
$res = preg_split('/[^\pL-]+/u', $str);
这将分为+
一个或多个字符,这些字符既不是unicode letter \pL
也不是短划线-
答案 1 :(得分:1)