pregsplit - 如何将字母数字字符和“_”组合在一起?
pregsplit - how to group together alphanumeric character and "_"?
我在 pregsplit 中有以下表达式:
$content = preg_split('/([\p{P}\p{S}])|\s/', $file, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
现在如果输入文件的内容是int somenumber;
它将拆分为:
int
somenumber
;
如果它是 int some_number;
我会得到的是:
int
some
_
number
;
不过,我想要的是:
int
some_number
;
有没有办法编辑此表达式以将字母数字字符 + “_”组合在一起?
_
匹配\p{P}
(标点属性class)。用 (?!_)
负前瞻限制它:
$content = preg_split('/((?!_)[\p{P}\p{S}])|\s/', 'int some_number;', -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
参见PHP demo and a regex demo。
用这个(?!_)[\p{P}\p{S}]
,可以匹配除_
以外的所有标点符号字符。
我在 pregsplit 中有以下表达式:
$content = preg_split('/([\p{P}\p{S}])|\s/', $file, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
现在如果输入文件的内容是int somenumber;
它将拆分为:
int
somenumber
;
如果它是 int some_number;
我会得到的是:
int
some
_
number
;
不过,我想要的是:
int
some_number
;
有没有办法编辑此表达式以将字母数字字符 + “_”组合在一起?
_
匹配\p{P}
(标点属性class)。用 (?!_)
负前瞻限制它:
$content = preg_split('/((?!_)[\p{P}\p{S}])|\s/', 'int some_number;', -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
参见PHP demo and a regex demo。
用这个(?!_)[\p{P}\p{S}]
,可以匹配除_
以外的所有标点符号字符。