สมมติว่าฉันมี regex ต่อไปนี้:
-(\d+)-
และฉันต้องการแทนที่โดยใช้ C # กลุ่ม 1 (\d+)ด้วยAAเพื่อรับ:
-AA-
ตอนนี้ฉันกำลังแทนที่ด้วย:
var text = "example-123-example";
var pattern = @"-(\d+)-";
var replaced = Regex.Replace(text, pattern, "-AA-");
แต่ฉันไม่ชอบสิ่งนี้เพราะถ้าฉันเปลี่ยนรูปแบบให้ตรงกัน_(\d+)_แทนฉันจะต้องเปลี่ยนสายอักขระการแทนที่ด้วย_AA_ด้วยและสิ่งนี้ขัดกับหลักการของ DRY
ฉันกำลังมองหาสิ่งที่ชอบ:
เก็บข้อความที่ตรงกันทุกประการว่าเป็นอย่างไร แต่เปลี่ยนกลุ่ม 1 โดยthis textและกลุ่ม 2 ตามanother text...
แก้ไข:
นั่นเป็นเพียงตัวอย่าง ฉันแค่กำลังมองหาวิธีทั่วไปในการทำสิ่งที่ฉันพูดไว้ข้างต้น
มันควรจะทำงานเพื่อ:
anything(\d+)more_text และรูปแบบใด ๆ ที่คุณสามารถจินตนาการได้
สิ่งที่ฉันต้องการทำคือแทนที่เฉพาะกลุ่มและรักษาส่วนที่เหลือของการแข่งขัน
:)ก็ตาม ในความคิดของฉันทางออกนั้นดีกว่าและสะอาดกว่าการใช้ lookahead และ lookbehinds