我正在将文本从txt文件转换为数组。我需要使用正则表达式将该数组中的文本切碎。
这是我的文本文件中的数组。
MATCH (p:Person)-[:WROTE]->(m:Movie), (p2:Person)-[:WROTE]->(m2:Movie)
RETURN p.name, m.title, p2.name, m2.title;
如果我需要以一行为例进行说明,
input => 65S34523APPLE BEAUTIFUL6.000TX786.34563.675 234.89
必填部分=> 65S34523 苹果非常漂亮 6.000 TX 786.345 63.67 5 234.89
我想要的目标:
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
)
我需要多个正则表达式模式来实现此目的。我需要按顺序将数据切碎。但是由于没有特定的布局,我不知道根据正则表达式模式选择什么。
我尝试了各种代码来粉碎该数组。
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 ($smash as $row) {
$delete_numbers = preg_replace('/\d/', '', $smash);
}
echo "<pre>";
print_r($delete_numbers);
echo "</pre>";
自然地,这不是我想要的。每个数组都有不同的结构。所以我也必须检查if-else。
在示例中可以看到,没有纯文本。 TX , YJ , EQ 。应使用苹果擦拭点。文字开头的字母应 被删除。其余的特殊字符必须被删除。
我已经尝试了以上许多方法,还研究了其他示例。
结果;
我快要死了。
答案 0 :(得分:0)
代码:(Demo)
$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',
),
)
我的模式假设:
p.s。如果您不希望在PEN?
之后添加讨厌的结尾空格,可以使用以下方法:
~(\w+\d)([^\d ]+(?: [^\d ]+)*) ?[^A-Z]+([A-Z]{2})(\d+\.\d{3})~