ฉันใช้นิพจน์ปกติเพื่อสร้าง SQL จากไฟล์ข้อความที่มีข้อมูล "ส่วนหัว" (RecordType, Order) และ "child" (ProdCode) ข้อมูล ฉันต้องการคำแถลงสำหรับรายการย่อยแต่ละรายการไม่ใช่เฉพาะส่วนหัวแต่ละรายการ ไฟล์มีลักษณะดังนี้:
RecordType:Amend
OrderNo:Order1
ProdCode:Product1
ProdCode:Product2
RecordType:Create
OrderNo:Order2
ProdCode:Product3
ProdCode:Product4
จากที่ฉันต้องการได้รับนี้:
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Amend', 'Order1', 'Product1')
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Amend', 'Order1', 'Product2')
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Create', 'Order2', 'Product3')
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Create', 'Order2', 'Product4')
ฉันจัดการเพื่อจับคู่และแทนที่ระเบียนส่วนหัวแต่ละรายการด้วยเด็กโดยใช้ regex และการแทนที่นี้:
^RecordType:(?<RT>.+)$\r\n^OrderNo:(?<ORD>.+)$(\r\n^ProdCode:(?<PID>.+)$)+
INSERT INTO #Reset \(RecordType, strPoNo, strItemNo\) values \('$+{RT}', '$+{ORD}', '$+{PID}'\)
น่าเสียดายที่นี่ใช้เวลาเพียงกลุ่มสุดท้ายเท่านั้นProdCode
ดังนั้นฉันจึงจบลงด้วยสิ่งต่อไปนี้:
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Amend', 'Order1', 'Product2')
insert into #Reset (RecordType, OrderNo, ProdCode) values ('Create', 'Order2', 'Product4')
มีวิธีในการแทนที่ ProdCodes ทั้งหมดในการดำเนินการแทนที่เดียวหรือไม่?
ฉันใช้ Notepad ++ 6.8.1
1
ฉันไม่คิดว่าเป็นไปได้ด้วย regx เดียว สำหรับงานดังกล่าวคุณต้องเขียนสคริปต์ในภาษาสคริปต์ที่คุณชื่นชอบ
—
โตโต้
ขอบคุณ เป็นที่ยอมรับฉันทำ 1 ซับใน. net ในตอนท้าย แต่ดีที่จะรู้
—
Rhumborl