0

我有很大的字符串,我需要分隔信息。它的某些部分会有所不同,而有些则不会。我面临的困难是我找不到可以得到我想要的匹配的符号或东西。所以这里是字符串:

$str = "01;01;283;Póvoa do Vâle do Trigo;15315100 01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO 01;01;2504;Caselho;;;;;;;;;;;3750;012;AGADÃO _ "15" '' ghdhghg AND IT CONTINUES

因此,如果我们查看字符串 ( 01;01;283;Póvoa do Vale do Trigo;15315100) 的第一部分,我想保留的是:

01;01;283

并删除其余的东西

在每种情况下,但看看第一个例子......:01 始终是一个永远不会超过 2 的数字(不是 040 或 150505 或 4075),下一个 01 永远不会超过 2(不是 405 或 1565 或 425)那么 283 是可以更大的数字,它会有所不同(可以是 300 或 17581 或 40755794)

基本上最后我只想要每个部分的开头,例如:

01;01;283
01;01;249
01;01;2504
05,80,104258
94,76,56789124

对不起,我是葡萄牙人的任何拼写错误


我忘了说这个分离的部分将进入一个数组!所以正则表达式不应该匹配,例如:

15315100 01;01;249

所以我不能使用 .+ 例如

我正在使用 PREG_REPLACE

4

3 回答 3

0
((?:\d\d;){2}\d+)

DEMO

And maybe it would be easier to just get everything between ***XXX***

\*([\d;]+)\*

DEMO

于 2013-10-22T23:22:17.277 回答
0

尝试这个:

/(\d+;\d+;\d+)/

应该管用。

于 2013-10-22T23:15:22.407 回答
0

试试下面的。正则表达式位于 match_all 行中。

$str = "***01;01;283***;Póvoa do Vâle do Trigo;15315100 ***01;01;249***;Alcafaz;;;;;;;;;;;3750;011;AGADÃO ";
preg_match_all("/\*\*\*[01][0-9];[01][0-9];[0-9]*\*\*\*.*?/", $str, $matches);
print_r($matches);
于 2013-10-22T23:18:18.057 回答