สมมติว่าฉันมี 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