2010-01-09 40 views
68

Đây có thể là một câu hỏi ngớ ngẩn, nhưng tôi không thể tìm thấy nó ở bất cứ nơi nào:Biểu thức chính quy Java OR operator

Làm cách nào để sử dụng toán tử biểu thức chính quy java (OR)?

ví dụ: Tel | Điện thoại | Fax

+0

Trông ok, những gì vấn đề là bạn có? – danben

+1

vâng, nên hoạt động. cletus, danben, và bản thân tôi đồng ý. Ngoài ra, @danben - tên tôi là Dan Beam, lol, rất gần! –

Trả lời

116

Bạn chỉ có thể sử dụng các đường ống trên riêng của mình:

"string1|string2" 

ví dụ:

String s = "string1, string2, string3"; 
System.out.println(s.replaceAll("string1|string2", "blah")); 

Output:

blah, blah, string3 

lý do chính để sử dụng dấu ngoặc đơn là giới hạn phạm vi của các lựa chọn thay thế:

String s = "string1, string2, string3"; 
System.out.println(s.replaceAll("string(1|2)", "blah")); 

có cùng sản lượng. nhưng nếu bạn chỉ làm điều này:

String s = "string1, string2, string3"; 
System.out.println(s.replaceAll("string1|2", "blah")); 

bạn nhận được:

blah, stringblah, string3 

vì bạn đã nói "string1" hoặc "2".

Nếu bạn không muốn chụp một phần của biểu thức sử dụng ?::

String s = "string1, string2, string3"; 
System.out.println(s.replaceAll("string(?:1|2)", "blah")); 
+0

Điều gì sẽ xảy ra nếu tôi cần phải phân định các chuỗi này từ các phần khác của regex cũng là các chuỗi? ví dụ. eee (ff | gg) eee Tôi có phải sử dụng dấu ngoặc đơn không? –

+0

Ah không bao giờ. Bản cập nhật của bạn sẽ khắc phục. Ví dụ cuối cùng là những gì tôi đang tìm kiếm. Cảm ơn! –

Các vấn đề liên quan