如何在 non-letter/non-dash 上 preg_split()?
How to preg_split() on non-letter/non-dash?
我需要拆分既不是 \p{L}
也不是 -
的字符。我有点困惑。 \P{L}|[^-]
显然不会工作,因为所有内容都会匹配 [^-]
。我不知道如何将 Unicode class 放入 []
。前瞻/后视将锁定前一个/后一个字符。
换句话说,我需要将foo-bar;dásh
拆分成['foo-bar', 'dásh']
。
两个都用一个negated character class:
$res = preg_split('/[^\pL-]+/u', $str);
这将拆分为 +
一个或多个 个既不是 unicode letter \pL
也不是破折号 -
的字符
你实际上可以拆分:
/[^\p{L}-]/u
这将匹配任何不是 unicode 字母和破折号的字符。
我需要拆分既不是 \p{L}
也不是 -
的字符。我有点困惑。 \P{L}|[^-]
显然不会工作,因为所有内容都会匹配 [^-]
。我不知道如何将 Unicode class 放入 []
。前瞻/后视将锁定前一个/后一个字符。
换句话说,我需要将foo-bar;dásh
拆分成['foo-bar', 'dásh']
。
两个都用一个negated character class:
$res = preg_split('/[^\pL-]+/u', $str);
这将拆分为 +
一个或多个 个既不是 unicode letter \pL
也不是破折号 -
的字符
你实际上可以拆分:
/[^\p{L}-]/u
这将匹配任何不是 unicode 字母和破折号的字符。