cha*_*tsm 13 php regex string split
希望这应该是一个快速而简单的方法,使用PHP我试图将一个字符串拆分成一个数组,但仅限于最后一个空白实例.到目前为止我有......
$str="hello this is a space";
$arr=preg_split("/\s+/",$str);
print_r($arr);
Array ( [0] => hello [1] => this [2] => is [3] => a [4] => space )
Run Code Online (Sandbox Code Playgroud)
...按空白的所有实例分割.
如何将此正则表达式展开以仅按空白的最后一个实例进行拆分?成为...
Array ( [0] => hello this is a [1] => space )
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
Bar*_*ers 44
尝试:
$arr=preg_split("/\s+(?=\S*+$)/",$str);
Run Code Online (Sandbox Code Playgroud)
编辑
一个简短的解释:
在(?= ... )
被称为正前方看.例如,如果下一个字符(右边的一个字符)是a ,a(?=b)
则只匹配单个'a'
字符'b'
.请注意,'b'
是不是比赛的一部分!
这\S
只是角色类 的简写[^\s]
.换句话说:它匹配除空白字符以外的单个字符.在+
后*
,使字符类\S
的占有欲.
最后,$
表示字符串的结尾.
回顾一下,完整的正则表达式\s+(?=\S*+$)
将用简单的英语读取如下:
只有在向前看那些空格字符时才匹配一个或多个空白字符,可以看到除空格字符之外的零个或多个字符,后跟字符串的结尾.