php拆分并匹配正则表达式

时间:2016-09-19 01:52:45

标签: php regex split

我需要用空格分隔字符串,并在PHP正则表达式中匹配空格字符。有人有任何想法吗?

$string = "microsoft office home and business 38.1 24 N/A 76.3"

并将其拆分为

  

阵   (       [0] =>微软办公室家庭和企业       [1] => 38.1       [2] => 24       [3] => N / A       [4] => 76.3   )

我试过这个但不适合我

preg_replace ("/[^a-zA-Z $]/", "", $string);

3 个答案:

答案 0 :(得分:0)

怎么样......

$string = "This is a name 38 24 N/A 76";
$regex  = '/([^0-9]+) ([\dN\.\/A ]+)/';

preg_match($regex, $string, $m);

$name  = $m[1];
$parts = explode(' ', $m[2]);

var_dump($name, $parts);

// You get:
// string(14) "This is a name"
// array(4) {
  // [0]=>
  // string(2) "38"
  // [1]=>
  // string(2) "24"
  // [2]=>
  // string(3) "N/A"
  // [3]=>
  // string(2) "76"
// }

答案 1 :(得分:0)

您可以根据此

进行拆分
\s(?=\d)|(?<=\d)\s

参见演示。

https://regex101.com/r/wV5bD0/3

答案 2 :(得分:0)

preg_match_all()与以下表达式一起使用:

^(?P<name>\D+)
([\d.]+)\h*
([\d.]+)\h*
([NA/]+)\h*
([\d.]+)$

regex101.com上查看它(请注意修饰符!)。

<小时/> 在PHP中,这归结为:

<?php

$regex = '~
        ^(?P<name>\D+)
        ([\d.]+)\h*
        ([\d.]+)\h*
        ([NA/]+)\h*
        ([\d.]+)$~xm';

$string = 'microsoft office home and business 38.1 24 N/A 76.3
This is a name 38.0 24.1 N/A 76';

preg_match_all($regex, $string, $matches, PREG_SET_ORDER);
print_r($matches);
?>

同时查看working demo on ideone.com