我需要从PO中找到一个项目的信息。我有商品编号,描述,数量,单价,纳税百分比 ,以及总价。我应该找到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个匹配项?
答案 0 :(得分:0)
默认情况下,regexp量词是贪婪的,因此它们将匹配允许其余正则表达式匹配的最长字符串。而不是{1,4}
,使用+?
来获得描述的非贪婪匹配。