Với tham chiếu đến bên dưới câu hỏi - String.replaceAll single backslashes with double backslashesjava, biểu hiện thường xuyên, cần phải thoát khỏi dấu chéo ngược trong regex
Tôi đã viết một chương trình thử nghiệm, và tôi thấy rằng kết quả là đúng trong cả hai trường hợp, cho dù tôi thoát khỏi dấu chéo ngược hoặc không phải. Điều này có thể là do - \ t là chuỗi thoát chuỗi Java được nhận dạng. (Hãy thử \ s và nó sẽ khiếu nại). - \ t được lấy làm tab theo nghĩa đen trong regex. Tôi không chắc chắn lý do.
Có hướng dẫn chung nào về thoát khỏi regex trong Java hay không. Tôi nghĩ rằng việc sử dụng hai dấu gạch chéo ngược là cách tiếp cận chính xác.
Tôi vẫn muốn biết ý kiến của bạn.
public class TestDeleteMe {
public static void main(String args[]) {
System.out.println(System.currentTimeMillis());
String str1 = "a b"; //tab between a and b
//pattern - a and b with any number of spaces or tabs between
System.out.println("matches = " + str1.matches("^a[ \\t]*b$"));
System.out.println("matches = " + str1.matches("^a[ \t]*b$"));
}
}
Điều này là đúng, * "Tôi tin" * là không cần thiết. '' \\ t "' dịch thành '" \ t "' trong chuỗi Java, nó chuyển thành ký tự tab trong công cụ regex. '' \ T "' dịch thành một ký tự tab trong chuỗi Java, vẫn không thay đổi trong regex. – Tomalak
Cảm ơn. Tôi hiểu. – RuntimeException
@Tomalak Đã loại bỏ các _'I tin'_ bit ... xin lỗi về điều đó ... –