如何在统一文本中使用正则表达式模式粉碎数组?



我正在将文本从txt文件转换为数组。我需要使用正则表达式粉碎此数组中的文本。

这是我的文本文件中的数组。

Array
(
[0] => 65S34523APPLE IS VERY BEAUTIFUL6.000TX786.34563.675 234.89
[1] => 06W01232BOOK IS SUCCESSFUL1.000YJ160.00021.853 496.00
[2] => 67E45643DO YOU HAVE A PEN? 7/56.450EQ9000.3451.432 765.12
)

如果我需要解释一行作为示例,

输入 => 65S34523苹果非常BEAUTIFUL6.000TX786.34563.675 234.89

必填部分 =>65S34523苹果很漂亮6.000TX786.34563.67 5 234.89

我想要的目标:

Array
(
[0] => 65S34523
[1] => APPLE IS VERY BEAUTIFUL
[2] => TX
[3] => 786.345
)

我需要多个正则表达式模式来实现这一点。我需要在循环中按顺序粉碎我想要的数据,但由于没有特定的布局,我不知道根据正则表达式模式选择什么。

我已经尝试了各种代码来粉碎这个数组。

$smash = 
array('65S34523APPLE IS VERY BEAUTIFUL6.000TX786.34563.675 234.89', 
'06W01232BOOK IS SUCCESSFUL1.000YJ160.00021.853 496.00',
'67E45643DO YOU HAVE A PEN? 7/56.450EQ9000.3451.432 765.12');

我正在尝试对数组进行 foreach 和解析。例如,我试图先获取文本。

foreach ($smash as $row) {
$delete_numbers = preg_replace('/d/', '', $smash);
}
echo "<pre>";
print_r($delete_numbers);
echo "</pre>";

原来是这样。

Array
(
[0] => SAPPLE IS VERY BEAUTIFUL.TX.. .
[1] => WBOOK IS SUCCESSFUL.YJ.. .
[2] => EDO YOU HAVE A PEN? /.EQ.. .
)

自然,这不是我想要的。每个数组都有不同的结构。所以我也必须检查一下是否。

正如您在示例中所看到的,没有纯文本。这里TX,YJ,EQ 应该删除。这些应该用苹果擦拭。正文开头的第一个字母应 被删除。必须删除剩余的特殊字符

我已经尝试了上述许多方法。我看过其他例子。

结果;

我陷入了死胡同。

代码:(演示(

$smash = ['65S34523APPLE IS VERY BEAUTIFUL6.000TX786.34563.675 234.89', 
'06W01232BOOK IS SUCCESSFUL1.000YJ160.00021.853 496.00',
'67E45643DO YOU HAVE A PEN? 7/56.450EQ9000.3451.432 765.12'];
foreach ($smash as $line) {
$result[] = preg_match('~(w+d)(D+)[^A-Z]+([A-Z]{2})(d+.d{3})~', $line, $out) ? array_slice($out, 1) : [];
}
var_export($result);

输出:

array (
0 => 
array (
0 => '65S34523',
1 => 'APPLE IS VERY BEAUTIFUL',
2 => 'TX',
3 => '786.345',
),
1 => 
array (
0 => '06W01232',
1 => 'BOOK IS SUCCESSFUL',
2 => 'YJ',
3 => '160.000',
),
2 => 
array (
0 => '67E45643',
1 => 'DO YOU HAVE A PEN? ',
2 => 'EQ',
3 => '9000.345',
),
)

我的模式假设:

  1. 第一组将由数字和字母组成,并以数字结尾。
  2. 第二组不包含数字。
  3. 第三组始终是 2 个大写字母。
  4. 第四组将可靠地具有三个小数位。

附言如果你不想要那个讨厌的尾随空格后PEN?,你可以使用这个:

https://3v4l.org/9XpA6

~(w+d)([^d ]+(?: [^d ]+)*) ?[^A-Z]+([A-Z]{2})(d+.d{3})~

最新更新