2017-03-17 70 views
1

我在pregsplit下面的表达式: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;我'd get is:

int 
some 
_ 
number 
; 

不过,我想的是:

int 
some_number 
; 

是否有共同编辑这个表达式组字母数字字符+的“_”的方法吗?

回答

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}],除了_之外,所有标点和符号字符都可以匹配。

相关问题