什么是正则表达式在PHP中拆分后面的字符串?

时间:2018-05-28 18:34:29

标签: php regex preg-split

字符串

T1 - X1(1), 7
T2 - C2(-9), -15
T3 - Y2(1), 3
T5 - C2(-1), 100

regexp用于preg_split

/[-,#\n#()]/
  

在上面的正则表达式中,它考虑的是臀部空间与数字前面的负数相同。

需要最终结果 在preg_split和trim空间之后的数组[" T1"," X1"," 1"," 7"," T2&# 34;," C2"" -9"" -15"" T3"" Y2&#34 ;, " 1"" 3"" T5"" C2"" -1"" 100"]

需要在regexp中进行哪些更改才能获得所需的最终结果?

2 个答案:

答案 0 :(得分:1)

You should skip the negative numbers. This can be done with PCRE verbs:

-\d(*SKIP)(*FAIL)|\s*[-,#\n#()]\s*

PHP example:

$string = 'T1 - X1(1), 7
T2 - C2(-9), -15
T3 - Y2(1), 3
T5 - C2(-1), 100';
print_r(preg_split('/-\d(*SKIP)(*FAIL)|\s*[-,#\n#()]\s*/', $string, -1, PREG_SPLIT_NO_EMPTY));
  1. https://3v4l.org/m51qS
  2. https://regex101.com/r/659ocz/1/

答案 1 :(得分:0)

You could match either a whitespace character, a hyphen and a whitespace s-\s character or | match the characters you want to exclude [(),\s] using a character class:

\s-\s|[(),\s]

$data = <<<DATA
T1 - X1(1), 7
T2 - C2(-9), -15
T3 - Y2(1), 3
T5 - C2(-1), 100
DATA;

$result = preg_split("~\s-\s|[(),\s]~", $data, -1, PREG_SPLIT_NO_EMPTY);

print_r($result);

Demo