我有这样的字符串:
wh4tever_(h4r4ct3rs +syMb0|s! ASC
wh4tever_(h4r4ct3rs +syMb0|s! DESC
我不知道第一个字符是什么,但我知道它们以' ASC'
或' DESC'
结束,我想拆分它们以便我得到一个像:< / p>
array(
[0] => 'wh4tever_(h4r4ct3rs +syMb0|s!'
[1] => 'ASC' //or 'DESC'
)
我知道使用preg_split()
一定非常容易,但我认为正则表达式是我永远不会与之相处的......
答案 0 :(得分:3)
您可以将以下正则表达式与preg_split()
:
\s(?=(ASC|DESC))
<强>解释强>
\s
- 匹配任何空格字符(?=
- 开始积极前瞻
(ASC|DESC)
- ASC
或DESC
)
- 结束了积极向前看<强>可视化:强>
<强>完整强>
$str = 'wh4tever_(h4r4ct3rs +syMb0|s! ASC';
$arr = preg_split('/\s(?=(ASC|DESC))/', $str);
print_r($arr);
<强>输出:强>
Array
(
[0] => wh4tever_(h4r4ct3rs +syMb0|s!
[1] => ASC
)
答案 1 :(得分:3)
试试这个,
$str = "wh4tever_(h4r4ct3rs +syMb0|s! ASC";
$str1 = "wh4tever_(h4r4ct3rs +syMb0|s! ASC";
$ar = preg_split('/(ASC|DESC)/i', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$ar1 = preg_split('/(ASC|DESC)/i', $str1, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($ar);
print_r($ar1);
输出: 数组([0] =&gt; wh4tever_(h4r4ct3rs + syMb0 | s![1] =&gt; ASC) 数组([0] =&gt; wh4tever_(h4r4ct3rs + syMb0 | s![1] =&gt; DESC)
答案 2 :(得分:2)
您可以使用此正则表达式:
\s(?=(A|DE)SC)
并拆分它。
正如sshashank124所指出的,它是一种非常好的工具,它与语言无关。