【发布时间】:2015-04-22 20:55:27
【问题描述】:
我需要从采购订单中查找商品信息。我有商品编号、描述、数量、单价、税率 ,以及总价。我应该找到 3 个匹配项,但第 3 项的描述信息很大,并且将文本分成几行:
1 99999 Item description item description <DESC> 2 100.10 10% 200.20
2 99999 Item description item description <DESC> 3 100.10 10% 300.30
3 99999 Item description item description
Item description item description
Item description item description
<DESC> 1 100.10 10% 100.10
我创建了标签<DESC>来尝试作为描述的终点,因为描述中有数字和特殊字符,我需要使用.*来获取它。
我创建了这个正则表达式来匹配该行,但由于第 3 项,它不起作用。我在这里使用{1,4} 来获取详细说明:
\d{1,3}\s*\d{5}\s*\s*(.+\s*\n*){1,4}<DESC>\s*\d{1,3}\s*([0-9]+(\,[0-9]{3})*\.[0-9]{2})\s*([0-9]+(\,[0-9]{1,2})?)\%\s*([0-9]+(\,[0-9]{3})*\.[0-9]{2})
...但它只生成 2 个匹配项。
1 99999 Item description item description <DESC> 2 100.10 10% 200.20
2 99999 Item description item description <DESC> 3 100.10 10% 300.30
和
3 99999 Item description item description
Item description item description
Item description item description
<DESC> 1 100.10 10% 100.10
有没有办法更改 (.+\s*\n*){1,4}<DESC> 以获取第一个 <DESC> 并在项目 1 和 2 之间找到 2 个匹配项?
【问题讨论】:
-
你似乎可以修改内容,所以你应该更好地格式化它,而不是使用正则表达式
-
没有一个真实的例子,我不可能提供帮助。
标签: regex