แทนที่การจับคู่กลุ่มที่มีชื่อหลายรายการในกลุ่มการแข่งขันเดียว


0

ฉันใช้นิพจน์ปกติเพื่อสร้าง 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.