นี่อาจเป็นคำถามที่โง่ แต่ฉันหาไม่เจอ:
ฉันจะใช้ตัวดำเนินการ java หรือนิพจน์ทั่วไป (|) โดยไม่มีวงเล็บได้อย่างไร
เช่นโทร | โทรศัพท์ | แฟกซ์
นี่อาจเป็นคำถามที่โง่ แต่ฉันหาไม่เจอ:
ฉันจะใช้ตัวดำเนินการ java หรือนิพจน์ทั่วไป (|) โดยไม่มีวงเล็บได้อย่างไร
เช่นโทร | โทรศัพท์ | แฟกซ์
คำตอบ:
คุณสามารถใช้ท่อได้ด้วยตัวเอง:
"string1|string2"
ตัวอย่างเช่น:
String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|string2", "blah"));
เอาท์พุต:
blah, blah, string3
เหตุผลหลักในการใช้วงเล็บคือการ จำกัด ขอบเขตของทางเลือกอื่น:
String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(1|2)", "blah"));
มีผลลัพธ์เดียวกัน แต่ถ้าคุณทำสิ่งนี้:
String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|2", "blah"));
คุณได้รับ:
blah, stringblah, string3
เพราะคุณเคยพูดว่า "string1" หรือ "2"
หากคุณไม่ต้องการจับส่วนนั้นของนิพจน์ให้ใช้?:
:
String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(?:1|2)", "blah"));