【发布时间】:2019-04-11 08:33:06
【问题描述】:
我有一个类似
的字符串BK0001 My book (4th Edition) $49.95 (Clearance Price!)
我想要一种方法将其拆分为不同的部分,例如
[BK0001]
[My Book (4th Edition)]
[$49.95]
[(Clearance Price!)]
我对正则表达式很陌生,我正在使用它来解析文件中的一行。我设法通过使用
获得了第一部分BK0001
$parts = preg_split('/\s+/', 'BK0001 My book (4th Edition) $49.95 (Clearance Price!)';
然后获取 $part[0] 值,但不确定如何拆分它以获取其他值。
【问题讨论】:
-
你用过regex101吗?学习正则表达式和针对特定需求进行开发的绝佳资源。
-
尝试拼出子模式。比如
preg_match('~^(?<code>\S+)\s+(?<name>.*?)\s+(\$\d[\d.]*)\s*(?<details>.*)$~', $text, $matches),见demo。 -
@Dan Farrel 我有,但我不经常使用 php 和正则表达式,我主要在 python 中编写代码,通常使用 string.split() 来完成诸如此类的任务。这是我需要正则表达式并投入时间学习它的罕见时刻之一,这确实是一个很好的选择。
-
@WiktorStribiżew 完美运行。谢谢
-
learning it fully really a good option right now学习正则表达式总是很好,大多数语言都有它的味道,而且非常强大和有用。
标签: php regex split preg-split