regex - 匹配一组字符或什么都不匹配的正则表达式
问题描述
我有一组文本作为:
- 1 240R 2021 年 4 月 15 日 240 升 Sulo Bin 回收 - Dkt#11053610 O/N:一个牙科 $10.00。
- 1 1.5cm 2021 年 4 月 6 日 1.5m Co-Mingle 回收箱 - Dkt#11028471 $18.00。
- 1 1.5m 2021 年 4 月 12 日 服务 1.5m 前升降箱 - Dkt#11028421 $24.00
- 1 660 2021 年 4 月 14 日 660L 后提升箱 - Dkt#11156377 O/N:您的汽车已售出 $22.50
我正在尝试正则表达式:PCRE(PHP<7.3)
^(\d+) [^\$]+ (\d+ \w+ \d+) (\d.+ \w.+) \S (Dkt\S\d+)[^\$]+ (\$.*)$
解析上述内容但是,我无法从上面的列表中解析“O/N:ONE DENTAL”或“O/N:您的汽车已售出”
如果在 Dkt#xxxx 之后有什么东西,我该怎么做,它也会被解析或什么都没有
解决方案
由于您已经有了该模式,因此我对其进行了一些细微的修改。这是基于提供的示例字符串,如果您有用于匹配的规则的其他变体,可能需要进一步修改。
示例:
^(\d) (\S+) (\d{2} \w{3} \d{4}) (.*)\s+-\s(Dkt\S+)\s*(.*?)\s*(\$\d+(?:\.\d+)?)\.?\s*$