我在pregsplit中有以下表达式:
$content = preg_split('/([\p{P}\p{S}])|\s/', $file, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
现在,如果输入文件的内容是int somenumber;
它会分成:
int
somenumber
;
如果是some_number;
,我得到的是:
int
some
_
number
;
但是,我想要的是:
int
some_number
;
有没有办法编辑这个表达式,将字母数字字符+“_”组合在一起?
答案 0 :(得分:2)
_
与\p{P}
(标点符号属性类)匹配。使用(?!_)
否定前瞻限制它:
$content = preg_split('/((?!_)[\p{P}\p{S}])|\s/', 'int some_number;', -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
请参阅PHP demo和regex demo。
使用此(?!_)[\p{P}\p{S}]
,可以匹配除_
之外的所有标点符号和符号字符。