ไม่สามารถสร้าง regex สำหรับสตริง
Oct 13 2020
ฉันมีสตริงabc-[|123|243|]-xyz-[|432|567|]และต้องการสร้างนิพจน์ทั่วไปที่ตรงกับสตริงที่ระบุ
regex ควรได้รับการทดสอบกับตัวอย่างต่อไปนี้และด้วยผลลัพธ์ที่เฉพาะเจาะจง
ประสบการณ์ 1: abc-[|123|234|]-xyz-[|432|567|]( 123มีอยู่ใน[|123|243|])
ผลลัพธ์: ตรงกัน
ประสบการณ์ 2: xyz-[|123|243|]-abc-[|432|567|](ลำดับของabcและxyzแลกเปลี่ยน)
ผลลัพธ์: ไม่ตรงกัน
ประสบการณ์ 3: abc-[|243|563|]-xyz-[|432|567|]( 243และ432ปัจจุบัน)
ผลลัพธ์: ตรงกัน
ประสบการณ์ 4: xyz-[|143|434|]-abc-[|432|999|]( [|148|434|]ไม่ตรงกับตัวเลขใด ๆ ใน[|123|243|])
ผลลัพธ์: ไม่ตรงกัน
ฉันพยายามสร้าง regex แต่ใช้ได้เฉพาะในกรณีที่แน่นอนและไม่ทำงานในกรณีอื่น ๆ
abc-\[\|123\||243\|\]-xyz-\[\|432\||567\|\]
คำตอบ
1 WiktorStribiżew Oct 13 2020 at 10:05
คุณสามารถใช้ได้
^abc-\[\|(?:123|243)\|\d+\|\]-xyz-\[\|432\|\d+\|\]$
ดูการสาธิต regex
รายละเอียด
^- จุดเริ่มต้นของสตริงabc-\[\|-abc-[|(?:123|243)- อย่างใดอย่างหนึ่ง123หรือ243\|- ก|\d+- 1+ หลัก\|\]-xyz-\[\|432\|-|]-xyz-[|432|ข้อความ\d+- 1+ หลัก\|\]-|]ข้อความ$- จุดสิ้นสุดของสตริง