pregsplit - 如何将字母数字字符和“_”组合在一起?

时间:2017-03-17 17:48:56

标签: php regex preg-split

我在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
;

有没有办法编辑这个表达式,将字母数字字符+“_”组合在一起?

1 个答案:

答案 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 demoregex demo

使用此(?!_)[\p{P}\p{S}],可以匹配除_之外的所有标点符号和符号字符。