簡體   English   中英

正則表達式從帶有空格分隔符和描述中的空格的行中讀取發票行詳細信息

[英]Regex to read Invoice Line Details from line with space delimiter and spaces in description

對於任何 REGEX 大師...我正在嘗試讓特定的 RegEx 讀取發票行中的值並將它們返回到命名組中,如下所示。

發票行看起來像

ABC08-388 THIS IS DECSCRIPTION WITH SPACES AND APOSTROPIES 80’s ctn 1 1 0 99.90 99.90 9.99 109.89
1233 ANOTHERLINE W/O APOSTROPHEIES each 100 100 0 1.05 105.00 10.50 115.50
XYZ-1234 ANOTEHR LINE WITH APOSTROPHE’S AND SLASH/S box 1 1 0 8.60 8.60 0.00 8.60

分離是

Part Number - From Start of line until the first space 
Description - Everything between Part Number and Box Description
Box Description - From end of Description to next group (Space separator)
Qty Ordered - Integer (Space separator)
Qty Delivered - Integer (Space separator)
Qty Back Order - Integer (Space separator)
Box Cost - Decimal number  (Space separator)
Line Total Ex Tax - Decimal number  (Space separator)
Line Tax -Decimal number  (Space separator)
Line Total Incl Tax EOL

我正在尋找類似的東西 - 但我無法讓所有的東西正常工作......請任何幫助將不勝感激

^(?<SupplierPartNumber>([A-Za-z0-9-_]+)) (?<SupplierDescription>([.])).(?<BoxQty>([0-9]+([\,\.][0-9]+)){1}(?<DeliveredQty>([0-9]+([\,\.][0-9]+)){1}(?<OnBackOrder>([0-9]+([\,\.][0-9]+)){1} (?<BoxCost>([0-9]+([\,\.][0-9]+)){1}(?<LineTotalEx>([0-9]+([\,\.][0-9]+)){1}(?<GSTAmount>([0-9]+([\,\.][0-9]+)){1} (?<LineTotalInc>([0-9]+([\,\.][0-9]+)){1}

看看這個,希望對你有幫助。 您可能需要編輯各個組的內容以對每個部分使用正確的格式,但希望您能明白這一點。

(?<SupplierPartNumber>^[A-Za-z\d-_]+)\s(?<Description>[a-zA-Z\s\d’\/]+[a-zA-Z])\s(?<BoxQty>\d+)\s(?<DeliveredQty>\d+)\s(?<OnBackOrder>\d+)\s(?<BoxCost>\d+\.\d+)\s(?<LineTotalExTax>\d+\.\d+)\s(?<LineTaxDecimal>\d+.\d+)\s(?<LineTotal>\d+.\d+$)

按每個要求打破正則表達式,以便更容易看到:

(?<SupplierPartNumber>^[A-Za-z\d-_]+)\s
(?<Description>[a-zA-Z\s\d’\/]+[a-zA-Z])\s
(?<BoxQty>\d+)\s
(?<DeliveredQty>\d+)\s
(?<OnBackOrder>\d+)\s
(?<BoxCost>\d+\.\d+)\s
(?<LineTotalExTax>\d+\.\d+)\s
(?<LineTaxDecimal>\d+.\d+)\s
(?<LineTotal>\d+.\d+$)

正則表達式演示以查看實際操作。

您會注意到我在上述解決方案中將兩個描述合二為一。 這是因為我不太清楚描述在哪里完成和盒子描述從哪里開始。 從您的示例中假設 Description 僅包含大寫字母,則正則表達式可能如下所示:

(?<SupplierPartNumber>^[A-Za-z\d-]+)\s(?<Description>[A-Z\s\d’\/]+[A-Z])\s(?<BoxDescription>[a-zA-Z\s\d’\/]+[a-zA-Z])\s(?<BoxQty>\d+)\s(?<DeliveredQty>\d+)\s(?<OnBackOrder>\d+)\s(?<BoxCost>\d+\.\d+)\s(?<LineTotalExTax>\d+\.\d+)\s(?<LineTaxDecimal>\d+.\d+)\s(?<LineTotal>\d+.\d+$)

(?<SupplierPartNumber>^[A-Za-z\d-]+)\s
(?<Description>[A-Z\s\d’\/]+[A-Z])\s
(?<BoxDescription>[a-zA-Z\s\d’\/]+[a-zA-Z])\s
(?<BoxQty>\d+)\s(?<DeliveredQty>\d+)\s
(?<OnBackOrder>\d+)\s
(?<BoxCost>\d+\.\d+)\s
(?<LineTotalExTax>\d+\.\d+)\s
(?<LineTaxDecimal>\d+.\d+)\s
(?<LineTotal>\d+.\d+$)

上述案例的正則表達式演示

您將更好地了解描述和框描述之間的分隔,因此請根據需要編輯相應的組。 如果您需要更多幫助,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM