C# 试图用正则表达式捕获一行数据
我试图抓住这一点:C# 试图用正则表达式捕获一行数据,c#,regex,c#-4.0,C#,Regex,C# 4.0,我试图抓住这一点: 581116 03/20/12 08:42 87NL 10%ETH A 8,500 G GAL 3.189 27,106.50 我的正则表达式是: ^(?<BOLNUM>\d+) +(?<LOADDATE>\d{2}/\d{2}/\d{2}) +(?<LOADTIME>\d{2}:\d{2}) +#?(?<PRODUCTDESC>.*?)#? {2,}(?<QUANTITY>\S+)
581116 03/20/12 08:42 87NL 10%ETH A 8,500 G GAL 3.189 27,106.50
我的正则表达式是:
^(?<BOLNUM>\d+) +(?<LOADDATE>\d{2}/\d{2}/\d{2}) +(?<LOADTIME>\d{2}:\d{2}) +#?(?<PRODUCTDESC>.*?)#? {2,}(?<QUANTITY>\S+) +(?<BASIS>G|N) +(?<UOM>\w{3}) +(?<PRICE>[\S]+)
请注意,
GAL
和3.189
之间没有间隙。有人能帮助我的正则表达式捕捉上面的行吗?请注意,数据可以以上述任何形式出现,因此我的正则表达式应该能够捕获行,无论字段(GAL
和价格字段之间是否存在间隙)。只需转换最后一部分:
(?<UOM>\w{3}) +(?<PRICE>[\S]+)
(?\w{3})+(?[\S]+)
为此:
(?<UOM>\w{3}) *(?<PRICE>[\S]+)
(?\w{3})*(?[\S]+)
*
使空格成为可选的。我实际上找到了答案。这里是(?\d+)(?\d{2}/\d{2}/\d{2})+(?\d{2}:\d{2})+#?(?*?)?{2,}(?\S+)(?G | N)+(?\w{3})\S*(?\S+)但应该是这样。谢谢(?\w{3})\s*(?[\s]+)
(?<UOM>\w{3}) *(?<PRICE>[\S]+)