Есть ли способ вернуть противоположность этому регулярному выражению? - PullRequest
0 голосов
/ 07 декабря 2018

Есть ли способ вернуть противоположное этому регулярному выражению?

preg_match_all('/\p{Han}+/u', '道斯·麥克', $matches);

Я хочу, чтобы $matches возвратил массив, содержащий символ "·", а не массив китайских символов.

Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2018

Используйте обратный класс, \P{Han}+:

if (preg_match_all('/\P{Han}+/u', '道斯·麥克', $matches))
{
    print_r($matches[0]); // => Array ( [0] => · )
}

См. PHP демо

В то время как \p{Han} соответствует всем китайским символам, \P{Han} соответствуетлюбой символ, отличный от этих символов.

То же самое относится и к другим классам свойств Unicode: для каждого \p{X} существует обратный \P{X} класс.\p{L} соответствует любой букве Unicode, а \P{L} соответствует любому символу, кроме буквы Unicode.Ср\p{N} (цифры) - \P{N} (не цифры), \p{S} (символы) - \P{S} (не символы) и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...