คำถามนี้สร้างจากคำถามก่อนหน้านี้ที่พบใน gis.stackexchange: วิธีแก้ไขข้อมูลแอตทริบิวต์อย่างง่ายดายโดยใช้นิพจน์ปกติ
บางทีใครบางคนสามารถชี้ให้ฉันในทิศทางที่ถูกต้อง?
ฉันมีไฟล์รูปร่างเวกเตอร์ของเส้นชั้นความสูง ในตารางคุณลักษณะฉันได้แปลงเขตข้อมูลที่ชื่อว่า FEET ซึ่งประกอบด้วยข้อมูลจำนวนเต็มที่มีค่าระดับความสูงเป็นเขตข้อมูลสายอักขระที่ชื่อว่า Label นอกจากนี้ฉันผนวกท้าย 'เพื่อสิ้นสุดของสตริงเพื่อให้เมื่อมีการติดป้ายข้อมูลมันจะถูกอ่านเป็นฟุต
สิ่งต่อไปที่ฉันพยายามทำคือการใส่เครื่องหมายจุลภาคระหว่างสองค่าแรกของสตริงเฉพาะเมื่อความยาวของสตริงมากกว่า 4 หรือเครื่องหมายจุลภาคจะปรากฏระหว่างหลักพันและหลักร้อยในฟิลด์ป้ายกำกับเท่านั้น ความยาวต้องมากกว่า 4 เพราะฉันยังนับ '
รหัสของฉันคือ:
case when length( "Label") >4 then regexp_replace( "Label", '^([0-9])+([0-9]{3}\')$','$1 , $2') else "Label" end
อย่างไรก็ตามฟังก์ชั่น regexp_replace ดูเหมือนจะไม่ยอมรับตัวแปรกลุ่ม $ 1 $ 2 ในพารามิเตอร์ที่ 3 ของฟังก์ชัน
ฉันดูที่http://docs.python.org/2/library/re.htmlเนื่องจากเครื่องคำนวณภาคสนามนั้นมาจากสิ่งที่ฉันเข้าใจตามการใช้ regex ของไพ ธ อน แต่ก็ไม่สามารถเข้าใจได้ บางทีสิ่งที่ฉันพยายามจะทำยังไม่สามารถทำได้ด้วยฟังก์ชั่นนี้ในเครื่องคิดเลขภาคสนามใน QGIS 1.8 บน mac OSX หรือน่าจะเป็นไวยากรณ์ของฉันผิดเพราะฉันเป็นโปรแกรมเมอร์สามเณรและค่อนข้างใหม่ในการแสดงออกปกติ