2013-04-23 35 views
7

Tôi đang cố gắng viết một regex khớp với \ hoặc /.Viết: [ /] ( hoặc/regex) chính xác?

Không có vấn đề theo thứ tự những gì tôi viết nó:

[//\] 

hoặc

[/\\] 

Nó được bằng cách nào đó thoát ra một trong hai khung vuông của tôi hoặc dấu gạch chéo của tôi. Cách chính xác để hiển thị trường hợp cụ thể này là gì?

+0

Bây giờ tôi nhận thấy, tôi muốn viết '[\\ /]' hoặc '[/ \\]' nhưng tôi chắc chắn hầu hết mọi người đều có nó. Tôi sẽ không chỉnh sửa câu trả lời của tôi vì câu trả lời dưới đây làm cho tham chiếu đến lỗi của tôi và tôi không muốn gây nhầm lẫn cho người dùng. Hy vọng điều này loại ra bất kỳ nghi ngờ về logic của tôi nếu có ai có nó. –

Trả lời

10

Có, bạn đang thoát khỏi khung đóng trong regex thứ hai và giá trị đầu tiên sẽ không biên dịch dưới dạng chuỗi. Bạn muốn

"[/\\\\]" 

Cả hai regex của bạn trong câu hỏi là chính xác đồng bằng regex. Tuy nhiên, vì regex được chỉ định bên trong một chuỗi ký tự Java, để chỉ định một \, bạn cần phải thoát khỏi nó \\. Do đó, chúng tôi kết thúc với "[/\\\\]" hoặc "[\\\\/]".

Tóm lại, để chỉ định chính xác \ trong regex, chúng ta phải thoát khỏi nó \\. Và để chỉ định chính xác \\ trong chuỗi ký tự Java, chúng ta phải thêm vào một lớp thoát khác \\\\.

+3

'một chữ \ trong một biểu thức chính quy, chúng ta phải viết \\\.' Không. '' \\ '' là đủ. Lý do là chúng ta cần một lớp thoát khác với chuỗi ký tự Java. – nhahtdh

+0

Bạn nói đúng, hãy để tôi thử cụm từ tốt hơn. – arshajii

+0

Cảm ơn bạn! Đây chỉ là những gì tôi cần. : D –

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