如何使用正则表达式进行拆分

时间:2017-05-25 10:14:43

标签: php regex php-7

为了分割给定的符号,我最初使用

list($pdf_platform_size, $pdf_capacity ,$pdf_accuracy) = split("[a-z-][a-z-]", $pdf_select_specification);

当给定的字符串说 6 x 3m - 20t - 2kg 时,它常常将给定的值分成6x3m用于 $ pdf_platform_size ,20t用于 $ pdf_capacity < / strong>,2kg $ pdf_accuracy

但是现在我升级到PHP 7,并且不推荐拆分。对于 preg_split()使用相同的功能似乎不起作用。 我试过了list($a,$b,$c) = preg_split("/[a-z-][a-z-]/", $x);

其中$ x 6 x 3m - 20t - 2kg

但我没有得到理想的结果。在这里寻求帮助

4 个答案:

答案 0 :(得分:0)

如果您单独SELECT group_concat(t1.team1,'-',t1.team2,' ',t1.result1,'-',t1.result2) from table t1 LEFT JOIN table t2 ON (t1.matchid = t2.matchid AND t1.id < t2.id) WHERE t2.id IS NULL; 分裂,则无需使用正则表达式。请改用-

explode

注意:使用PHP 7.1

进行速记数组解构

答案 1 :(得分:0)

您可以使用explode

def multi_plot(fig, tuples3, pos, title):
    x, y, z = zip(*tuples3)
    z = map(float, z)
    grid_x, grid_y = np.mgrid[min(x):max(x):100j, min(y):max(y):100j]
    grid_z = griddata((x, y), z, (grid_x, grid_y), method='cubic')

    ax = fig.add_subplot(2, 2, pos, projection='3d')
    ax.set_xlabel('sets')
    ax.set_ylabel('percentage')
    ax.set_zlabel('accuracy')
    ax.set_title(title)
    ax.plot_surface(grid_x, grid_y, grid_z, cmap=plt.cm.Spectral)


fig = plt.figure(figsize=plt.figaspect(0.5))

multi_plot(fig, tuples3_1, 1, "Bagging - mincase 1")
multi_plot(fig, tuples3_2, 2, "Bagging - mincase 2")
multi_plot(fig, tuples3_3, 3, "Bagging - mincase 3")
multi_plot(fig, tuples3_4, 4, "Bagging - mincase 4")
plt.show()

如果您想要没有这些空格的platform_size,请在此之后使用trim

答案 2 :(得分:0)

如前所述,您可以使用explode,但也可以使用preg_split

$x = '6 x 3m - 20t - 2kg';
list($a,$b,$c) = preg_split("/[-]/", $x);

如果空格存在,您可能需要trim()结果

答案 3 :(得分:0)

如果您需要值,可以使用preg_match_all

提取值
$x = '6 x 3m - 20t - 2kg';
preg_match_all('/(\d)+[ ]*x[ ]*(\d)+m[ ]*-[ ]*(\d)+t[ ]*-[ ]*(\d)kg/', $x, $dump);
var_dump($dump);