我有这样的字符串:
wh4tever_(h4r4ct3rs +syMb0|s! ASC
wh4tever_(h4r4ct3rs +syMb0|s! DESC
我不知道第一个字符是什么,但我知道它们以
' ASC'
或 ' DESC'
结尾,我想拆分它们,以便得到一个像这样的数组:
array(
[0] => 'wh4tever_(h4r4ct3rs +syMb0|s!'
[1] => 'ASC' //or 'DESC'
)
我知道使用
preg_split()
一定非常容易,但正则表达式是我认为我永远无法很好地使用的东西......
您可以将以下正则表达式与
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
)
试试这个,
$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] => wh4tever_(h4r4ct3rs +syMb0|s! [1] => ASC ) 数组 ( [0] => wh4tever_(h4r4ct3rs +syMb0|s! [1] => DESC )
您可以使用这个正则表达式:
\s(?=(A|DE)SC)
然后将其分开。
正如 sshashank124 所指出的,它是一个非常好的工具,与语言无关。