我需要分割字符串,如:
一些描述art.nr:4457 72 1x ACOUCH 90X200 NICE GRAY(3 colli)1x matras 85x205x12 2x matras 80x190x11部分规格14x Premium其他产品90x200x23 HR34
我需要的结果是:
为了使它更复杂,第一部分是可选的,但其他部分总是以'1x'开头。
我试过很多regexp,但我无法让它工作。我可以使用类似/\s?\d+x\s/
之类的preg_split()作为解决方法,但这很脏,虽然它很好地分裂。
即使只是试图将部分分成2到5,我也说不出正确。
我已经在PHP中使用preg_match_all()在最不复杂的字符串上尝试了许多regexp模式:
1x ACOUCH 90X200 NICE GRAY(3 colli)1x matras 85x205x12 2x matras 80x190x11部分规格14x Premium其他产品90x200x23 HR34
以下模式最接近:
/(\d+x\s+.+?)(\s+(\d+x\s+.+?(?!\s\d+x\s)))+/i
/(\d+x\s+.+)(\s+(\d+x\s+.+))+/i
我认为它应该是这样的:/((\s+)?(\d+x\s+.+(?!\s\d+x\s)))+/i
但它不能完成这项工作。
像/(\s?\d+x\s+.+)+/i
这样简单的只返回完整的字符串或只返回第一个字符/(\s?\d+x\s+.+?)+/i
我试过这些(和许多其他变种):
我究竟做错了什么?它让我疯狂;这真的不是我的第一个正则表达式!
(以及如何使用可选的第一部分使整个字符串工作)
提前致谢!