首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式错误的编号列表(1.、2.、3.等)、Regex之间的匹配内容

格式错误的编号列表(1.、2.、3.等)、Regex之间的匹配内容
EN

Stack Overflow用户
提问于 2019-01-31 21:51:31
回答 1查看 59关注 0票数 0

处理这个疯狂的字符串,这是一个从PDF到文本框架的转换。

我将在最后发布它,但在这里可能更容易破译:https://regex101.com/r/DxXupz/1

我想出了如何使用这个正则表达式来匹配1.2.之间的内容:

代码语言:javascript
复制
1\.(.*?)2\.

但是正如你所看到的,我所处理的$string有各种各样的数字和小数等等,并且一直到11.

是否有regex解决方案来捕获一个preg_match_all函数查询中的所有编号列表,例如(例如1. to 2.上面的regex ):

代码语言:javascript
复制
preg_match_all('/1\.(.*?)2\./s', $string, $matches);

把内容从1.带回到2.,把2.带回到3.,等等?

代码语言:javascript
复制
$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 .


";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 22:37:33

这个正则表达式应该给出您想要的结果:

代码语言:javascript
复制
\d+\s*\.\s*(CV243 96V DC.*?)(?=\d+\s*\.\s*CV243 96V DC|$)

它查找一些数字,可选地后面跟着空格、句点、一些可能的空格和字符串CV243 96V DC。然后,它抓取所有的字符,直到下一次出现开始模式或字符串的末尾(使用正的查找来断言,这样就不会在匹配中捕获字符)。在PHP中:

代码语言:javascript
复制
preg_match_all('/\d+\s*\.\s*(CV243 96V DC.*?)(?=\d+\s*\.\s*CV243 96V DC|$)/s', $string, $matches);
print_r($matches[1]);

输出有点混乱,所以我不会在这里全部重复,但是您可以在这个演示中看到这一点。以下是前两个值:

代码语言:javascript
复制
[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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54469774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档