VB Net RegEx匹配多个

时间:2016-11-15 04:51:40

标签: regex vb.net multiline

我正在尝试将RegEx多行匹配在一起。以下是我正在搜索的文字示例:

Total
2015
DOLLAR
AMOUNT
Oct-15 DIFF 15-16
Total
2015
COMPANY 1 - WI
Nuts $ 59.85 $ 0.00 $ 135.45 $ 0.00 $ 135.45 $0.00
Bolts $ 0.00 $ 0.00 $ 0.00 $ 0.00 $ 0.00 $0.00
Screws $ 449.20 $ 0.00 $ 541.23 $ 0.00 $ 541.23 $0.00
Total 7765: $ 509.05 $ 0.00 $ 676.68 $ 0.00 $ 676.68 $0.00
Company 2 - NE
Nuts $ 0.00 $ 0.00 $ 0.00 $ 0.00 $ 0.00 $0.00
Bolts $ 0.00 $ 55.67 $ 542.48 $ 719.82 $(177.34) $777.02
Total 1876: $ 0.00 $ 55.67 $ 2,960.52 $ 4,265.82 $(1,305.30) $5,854.60
Company 3 - MN
Nuts $ 109.52 $ 606.52 $ 858.36 $ 606.52 $ 251.84 $606.52
Paper $ 0.00 $ 0.00 $ 483.82 $ 0.00 $ 483.82 $678.30
Gas $ 0.00 $ 0.00 $ 0.00 $ 0.00 $ 0.00 $0.00
OTHER $ 521.49 $ 0.00 $ 521.49 $ 0.00 $ 521.49 $0.00
Total 6524: $ 631.01 $ 606.52 $ 3,909.09 $ 606.52 $ 3,302.57 $1,284.82
Company 4 - IA
Anything $ 0.00 $ 0.00 $ 0.00 $ 0.00 $ 0.00 $0.00
Other $ 0.00 $ 0.00 $ 171.90 $ 0.00 $ 171.90 $0.00
Total 1123: $ 0.00 $ 0.00 $ 171.90 $ 0.00 $ 171.90 $0.00

我试图将公司名称和总行数分组。如果我将其设置为多行并使用

^(.+?\s-\s.{2})$

那会得到我的公司名称。我也试过这个:

^(.+\s-\s\w{2}|Total\s\d{1,5}:.+)$

这将获得两条线并且将起作用,但它们都作为第1组进入。有没有办法确保它们匹配?那么第1组是公司名称,第2组是总线?我尝试在中间添加这样的东西但它没有用,因为公司和总线之间有不同的行数。

^(.+\s-\s\w{2})$(^.+$){1,20}^(Total\s\d{1,5}:.+)$

(我不记得我到底有什么,但是它给了我中间的线条......但并不总是正确的数字。)有没有办法在公司名称和他们之间跳过这些界限相应的总行数和第1组是客户名称,第2组是总行吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

^(.+\s-\s\w{2})$|^(Total\s\d{1,5}:.+)$

演示:https://regex101.com/r/8r8ZS0/1

答案 1 :(得分:0)

我能够得到我想要的东西:

^(.*\s-\s\w{2})$\n(^.+$\n)+?^Total\s(\d{2,5}:.+)$

它给出了组1中的客户名称和组3中的总线数,我可以忽略组2.谢谢。