处理这个疯狂的字符串,这是一个从PDF到文本框架的转换。
我将在最后发布它,但在这里可能更容易破译:https://regex101.com/r/DxXupz/1
我想出了如何使用这个正则表达式来匹配1.和2.之间的内容:
1\.(.*?)2\.但是正如你所看到的,我所处理的$string有各种各样的数字和小数等等,并且一直到11.
是否有regex解决方案来捕获一个preg_match_all函数查询中的所有编号列表,例如(例如1. to 2.上面的regex ):
preg_match_all('/1\.(.*?)2\./s', $string, $matches);把内容从1.带回到2.,把2.带回到3.,等等?
$string = "1. CZ243 96V DC
20
0pcs
11.35U
SD 220
.
00
USD
2
”
,74mm/s
25lbs .
2.
CV243 96V DC
10
0pcs
11.35USD 1135
.00
USD
4
”
,74mm/s
25lbs
3
. CV243 96V DC
150pcs 12.20
U
SD 1830.00
USD
6
”
,74mm/s
25lbs .
4. CV243 96V DC
100
pcs 13.50
1USD 1350.00
USD
8
”
,74mm/s
25lbs .
5
. CV243 96V DC
50
pcs
15.00USD
750.00
USD
10
”
,74mm/s
25lbs .
6. CV243 96V DC
200pcs
15.00USD
3000.00
USD
12
”
,74mm/s
25lbs .
7
. CV243 96V DC
50pcs
16.00USD 800.00
USD
14
”
,74mm/s
25lbs .
8. CV243 96V DC
75pcs 16.50
USD
1237.50
USD
16
”
,74mm/s
25lbs .
9. CV243 96V DC
5
0pcs
18.46USD
923.00
USD
18
”
,74mm/s
25lbs .
10.CV243 96V DC
50pcs
18.46USD
923.00
USD
20
”
,74mm/s
25lbs .
11.
CV243 96V DC
5
0pcs
20.77USD 1038.50
USD
24
”
,74mm/s
25lbs .
";发布于 2019-01-31 22:37:33
这个正则表达式应该给出您想要的结果:
\d+\s*\.\s*(CV243 96V DC.*?)(?=\d+\s*\.\s*CV243 96V DC|$)它查找一些数字,可选地后面跟着空格、句点、一些可能的空格和字符串CV243 96V DC。然后,它抓取所有的字符,直到下一次出现开始模式或字符串的末尾(使用正的查找来断言,这样就不会在匹配中捕获字符)。在PHP中:
preg_match_all('/\d+\s*\.\s*(CV243 96V DC.*?)(?=\d+\s*\.\s*CV243 96V DC|$)/s', $string, $matches);
print_r($matches[1]);输出有点混乱,所以我不会在这里全部重复,但是您可以在这个演示中看到这一点。以下是前两个值:
[0] => CV243 96V DC 20 0pcs 11.35U SD 220 . 00 USD 2 ” ,74mm/s 25lbs .
[1] => CV243 96V DC 10 0pcs 11.35USD 1135 .00 USD 4 ” ,74mm/s 25lbs Note
我认为您的数据应该从1. CV243开始,而不是从1. CZ243开始。如果它应该从1. CZ243开始,并且您仍然希望捕获它,那么将regex中的CV243更改为C[VZ]243。
https://stackoverflow.com/questions/54469774
复制相似问题