2011-01-29 23 views

Trả lời

1

Với câu hỏi như là, câu trả lời là không, vì thiết lập x = Pattern.LITERAL dẫn đến trích dẫn s hai lần trong biểu thức thứ hai. Với dấu ngoặc kép và s="A", chuỗi "A" sẽ không khớp, nhưng chuỗi "\\QA\\E" sẽ. Tuy nhiên,

Pattern.compile(s, x | Pattern.LITERAL) 

dường như là tương đương với

Pattern.compile(Pattern.quote(s), x & ~Pattern.LITERAL) 
0

Mặc dù tôi không thấy vấn đề với nó, tôi không hoàn toàn tin cậy khi áp dụng cờ mẫu tùy ý cùng với nội dung được trích dẫn toàn bộ mẫu. Các documentation đề cập rằng nó ám tất cả các cờ nhưng hai thừa, sau khi tất cả. Tôi nghĩ rằng nó sẽ là ok, nhưng tô màu cho tôi méfiant - không tin tưởng.

Bạn đã thử sử dụng \Q … \E chỉ trên các phần của mẫu mà bạn muốn được trích dẫn thành không phải meta, để nói?

+0

Tôi đã đọc các tài liệu hai lần và nó không rõ ràng. Hai mô tả tương tự nhưng không giống nhau, OTOH, tôi thấy không có sự khác biệt thực sự. Trong tài liệu cho báo giá họ viết "như thể nó là một mẫu chữ", và không có gì về trường hợp. Tôi biết \ Q .. \ E, và đó là cách Pattern.quote thực sự hoạt động. – maaartinus

3

Câu trả lời ngắn gọn: Ví dụ của bạn, có.

Câu trả lời dài: Có, nhưng Pattern.quote linh hoạt hơn. Điều gì xảy ra nếu bạn chỉ muốn một số mẫu được mô tả? Giống như:

Pattern.compile(Pattern.quote(s) + "+", x) 

Khi đặt mẫu Pattern.LITERAL flag, ngay cả ký tự + giờ đây sẽ được xử lý theo nghĩa đen.

Nếu bạn không tin tưởng tài liệu, có thể xem the source code tại Tìm kiếm mã Google cho Pattern.compile sẽ giúp ích.

Từ những gì tôi có thể xuất phát từ cách nhìn vào mã nguồn:

  • Nếu cờ đen là không bộ, bất kể tất cả những lá cờ khác, nó sẽ tìm kiếm bất kỳ \ Q ... \ E Các khối được trích dẫn và tự thoát khỏi các ký tự đặc biệt, giống như một ký tự mong đợi.

  • Nếu cờ đen được thiết lập, nó sẽ chuyển đổi toàn bộ mô hình bằng cách sử dụng phương pháp newSlice, và có những trường hợp đặc biệt đối với ít nhất là CASE_INSENSITIVE cờ và UNICODE_CASE cờ

+0

Bạn nói "có", nhưng không đưa ra lý do nào cho nó. Và tôi biết về sự linh hoạt. – maaartinus

+0

@maaartinus Tôi sắp viết một ví dụ để chứng minh điều đó :-) –

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