如何使用正则表达式按符号拆分字符串?
How to split out string by symbols using regex?
我有这样的输入字符串
"CC", 5, "B7C15", "B4C8"
我通过 preg_split
方法拆分了这个字符串。
但是当输入字符串 $str = 'CC';
方法不起作用。
我的代码:
preg_split('/(\d+)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
我得到输出结果:
array(4) {
[0]=>
string(1) "B"
[1]=>
string(1) "7"
[2]=>
string(1) "C"
[3]=>
string(2) "15"
}
array(1) {
[0]=>
string(1) "5"
}
array(4) {
[0]=>
string(1) "B"
[1]=>
string(1) "4"
[2]=>
string(1) "C"
[3]=>
string(2) "8"
}
而不是以下结果:
array(1) {
[0]=>
string(2) "CC"
}
我需要得到如下结果:
array(2) {
[0]=>
string(1) "C"
[1]=>
string(1) "C"
}
感谢提前。
更好的方法是使用:
preg_match_all( '/(\d+)|([a-z])/i', $string, $matches );
print_r($matches);
如果您需要将任何非数字字符序列拆分为一个字符元素,您只需添加 (\D)
(单个非数字字符组)作为正则表达式的替代:
preg_split('/(\d+)|(\D)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
您正在查看的文件格式称为 CSV,在解析时有很多陷阱。与其使用正则表达式编写自己的解析器,不如使用现有工具。
如果您从文件中读取这些内容,请使用 PHP 中内置的 fgetcsv
函数。
我有这样的输入字符串
"CC", 5, "B7C15", "B4C8"
我通过 preg_split
方法拆分了这个字符串。
但是当输入字符串 $str = 'CC';
方法不起作用。
我的代码:
preg_split('/(\d+)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
我得到输出结果:
array(4) {
[0]=>
string(1) "B"
[1]=>
string(1) "7"
[2]=>
string(1) "C"
[3]=>
string(2) "15"
}
array(1) {
[0]=>
string(1) "5"
}
array(4) {
[0]=>
string(1) "B"
[1]=>
string(1) "4"
[2]=>
string(1) "C"
[3]=>
string(2) "8"
}
而不是以下结果:
array(1) {
[0]=>
string(2) "CC"
}
我需要得到如下结果:
array(2) {
[0]=>
string(1) "C"
[1]=>
string(1) "C"
}
感谢提前。
更好的方法是使用:
preg_match_all( '/(\d+)|([a-z])/i', $string, $matches );
print_r($matches);
如果您需要将任何非数字字符序列拆分为一个字符元素,您只需添加 (\D)
(单个非数字字符组)作为正则表达式的替代:
preg_split('/(\d+)|(\D)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
您正在查看的文件格式称为 CSV,在解析时有很多陷阱。与其使用正则表达式编写自己的解析器,不如使用现有工具。
如果您从文件中读取这些内容,请使用 PHP 中内置的 fgetcsv
函数。