ฉันมีข้อความต่อไปนี้ด้านล่าง ฉันจะเขียน regex เพื่อจับข้อความทั้งหมดที่เกี่ยวข้องได้REQ_XXXอย่างไร
นี่คือการแสดงออกของฉันแต่มันจับ.*(REQ_.*)\| |3 |4 |5ฉันแค่อยากให้มันหยุดหลังจากครั้งแรกที่|มันเห็น

ฉันมีข้อความต่อไปนี้ด้านล่าง ฉันจะเขียน regex เพื่อจับข้อความทั้งหมดที่เกี่ยวข้องได้REQ_XXXอย่างไร
นี่คือการแสดงออกของฉันแต่มันจับ.*(REQ_.*)\| |3 |4 |5ฉันแค่อยากให้มันหยุดหลังจากครั้งแรกที่|มันเห็น

คำตอบ:
คุณสามารถใช้ได้ :
.*(REQ_[^|]*)\|
"|" ตัวละครจะถูกยกเว้น
แก้ไข:
.*(REQ_.*?)\|
เคล็ดลับจะ?บอกก่อนที่.*จะหยุดเร็วที่สุด วิธีนี้เป็นครั้งแรกที่ตามยุติขอบเขตของ| .*นี่คือสิ่งที่คุณต้องการ
คำตอบเก่าของฉันอยู่ด้านล่าง มันใช้งานได้ดี แต่ฉันคิดว่าข้างต้นเป็นวิธีที่ถูกต้อง
คำตอบเก่า:
.*การแข่งขัน (เกือบ) |ทุกอย่างรวมถึง ใช้[^|\n]*เพื่อจับคู่ทุกอย่างยกเว้น|และขึ้นบรรทัดใหม่
.*(REQ_[^|]*)\|
\nเป็นสิ่งจำเป็นเนื่องจาก pure [^|]*สามารถขยายการจับคู่มากกว่าหลายบรรทัด ฉันเดาว่าคุณไม่ต้องการสิ่งนี้
โซลูชันบางข้อได้โพสต์ไว้แล้วในคำตอบอื่น ๆ ฉันจะให้ข้อมูลสรุปที่นี่
คุณสามารถทำตามแนวทางได้หลายวิธีที่นี่คุณต้องตัดสินใจตามความต้องการของคุณ:
.*(REQ_[\w]+)[\s]*\|
[\w]+ตรงกับอักขระคำทั้งหมด (ตัวอักษรตัวเลขและ "_")|นี้จะไม่รวมอยู่ในผลลัพธ์ที่คุณบันทึกไว้ ( [\s]*อยู่นอกวงเล็บ).*(REQ_[^|]+)\|.*(REQ_.+?)\|หากREQ_มีผู้ติดตาม allways โดยตัวอักษรคำว่าคุณก็สามารถใช้REQ_w+หรือถ้าคุณไม่ต้องการที่จะตรงกับABCREQ_123ใช้ขอบเขตของคำ\bREQ_\w+ :