Ký tự .
trong một regex php chấp nhận tất cả các ký tự, ngoại trừ một dòng mới. Tôi có thể sử dụng những gì để chấp nhận TẤT CẢ các ký tự, bao gồm cả dòng mới?PHP Regex Bất kỳ ký tự nào
Trả lời
này thường được sử dụng để nắm bắt tất cả các nhân vật:
[\s\S]
Bạn có thể sử dụng bất kỳ sự kết hợp khác của "Type-X + Không phải loại-X "theo cùng một cách:
[\d\D]
[\w\W]
nhưng [\s\S]
được công nhận là viết tắt của" thực sự bất kỳ điều gì ".
Bạn cũng có thể sử dụng .
nếu bạn chuyển regex sang chế độ "dotall" (a.k.a. "single-line") qua công cụ sửa đổi "s"
. Đôi khi, đó không phải là giải pháp khả thi (regex động trong hộp đen chẳng hạn hoặc nếu bạn không muốn sửa đổi toàn bộ toàn bộ regex). Trong những trường hợp như vậy, các lựa chọn thay thế khác cũng giống nhau, bất kể cấu hình regex được định cấu hình như thế nào.
Đó là ký tự .
có nghĩa là "mọi ký tự" (chỉnh sửa: OP được chỉnh sửa). Và bạn cần phải thêm tùy chọn s để regexp của bạn, ví dụ:
preg_match("`(.+)`s", "\n");
Không phải chuyển tiếp dấu gạch chéo ở đầu và cuối của regexp? – Entity
Có thể, nhưng bất kỳ cặp dấu tách nào cũng sẽ làm. –
Không có trong PHP. Nó phải bắt đầu và kết thúc bằng dấu phân tách (bạn có thể chọn nó), và mọi ký tự trong dấu phân cách cuối cùng là một tùy chọn (nghĩa là U cho không phù hợp, tôi không phân biệt dạng chữ, v.v.) –
sẽ
[.\n]+
không hoạt động?
Làm thế nào về (.|\n)+
? Tôi đã thử nghiệm nó và nó có vẻ hoạt động.
Tôi khá chắc chắn đây là cách diễn đạt theo nghĩa đen chính xác những gì bạn đang yêu cầu.
Không, nó sẽ không. – SLaks
Chữ '.' trong một lớp ký tự không có nghĩa là" bất kỳ ký tự nào ". Nó có nghĩa là "một dấu chấm". Các lớp ký tự có cú pháp riêng của chúng. ;-) – Tomalak
@Tomalak: Cảm ơn lời giải thích, tôi vừa mới nhận ra nó ngay bây giờ. Tôi đoán tôi nên kiểm tra câu trả lời của mình trước khi đăng. Tôi đã chỉnh sửa câu trả lời của tôi ngay bây giờ. – gnomed
Các PHP Manual page for Dot bang rằng:
Nếu tùy chọn PCRE_DOTALL được thiết lập, sau đó chấm phù hợp với dòng mới là tốt.
Điều quan trọng bị thiếu ở đây. [\s\S]
khớp với một ký tự, trong khi dòng mới có thể là chuỗi ký tự. (Windows sử dụng hai ký tự: \r\n
.) Không phải .
(với DOT_ALL công cụ sửa đổi) cũng không phải [\s\S]
sẽ khớp với trình tự dòng mới. Cách tốt nhất để khớp với bất kỳ ký tự hoặc dòng mới nào là (.|\R)
, "mọi thứ ngoại trừ một dòng mới hoặc một dòng mới". \R
khớp với \n
, \r
và \r\n
.
- 1. Regex cho các ký tự từ trong bất kỳ ngôn ngữ nào
- 2. Regex để khớp với bất kỳ ký tự nào bao gồm các dòng mới
- 3. Regex để khớp với bất kỳ ký tự không phải từ nào, nhưng trừ
- 4. Regex: Khớp bất kỳ ký tự dấu câu nào ngoại trừ. và _
- 5. Sử dụng regex để khớp với bất kỳ ký tự nào trừ =
- 6. NSPredicate khớp với bất kỳ ký tự nào
- 7. JSON chỉ định "bất kỳ ký tự UNICODE nào"?
- 8. Python: bắt đầu với bất kỳ ký tự alpha nào
- 9. lời Tìm kiếm với bất kỳ ký tự lặp lại
- 10. Regex trận đấu bất kỳ ký tự 5 hoặc nhiều lần
- 11. Java RegEx khớp với bất kỳ thứ gì BUT chuỗi ký tự 'NIL' hoặc 'nil'
- 12. Regular Expression với ký tự đại diện để phù hợp với bất kỳ ký tự
- 13. RegEx trong văn bản tuyệt vời: So khớp bất kỳ ký tự nào, bao gồm cả dòng mới?
- 14. Regex - Đối sánh bất kỳ chuỗi ký tự nào ngoại trừ một từ cụ thể trong URL
- 15. ANTLR phù hợp với bất kỳ ký tự trừ
- 16. php regex thoát các ký tự đặc biệt
- 17. Regex cho bất kỳ thứ gì giữa []
- 18. Cho phép bất kỳ ký tự nào trong URL trong CodeIgniter
- 19. Regex nào sẽ viết hoa bất kỳ chữ cái nào sau khoảng trắng?
- 20. regex tìm ký tự giữa ""
- 21. regex để khớp với một ký tự đơn là bất kỳ thứ gì ngoài một không gian
- 22. Đặt số ký tự tối thiểu/tối đa cho bất kỳ ký tự nào sử dụng cụm từ thông dụng
- 23. Làm cách nào để nhập bất kỳ ký tự Unicode nào vào văn bản tuyệt vời?
- 24. REGEX - Trận ký tự đặc biệt bất cứ nơi nào trong chuỗi
- 25. .Net Regex phù hợp với chuỗi Với bất kỳ char không phải ASCII nào trong đó
- 26. Có bất kỳ Micro-ORM nào được viết cho PHP
- 27. Regex đơn giản, khớp với bất kỳ chuỗi nào có ít nhất một dấu gạch ngang
- 28. Các phiên PHP có đặt bất kỳ cookie nào không?
- 29. Thuật toán để tạo ngữ cảnh tự do ngữ cảnh từ bất kỳ regex
- 30. Nhận ba ký tự cuối từ bất kỳ chuỗi nào - Java
Hoàn hảo! Cảm ơn! – Entity
Có vẻ như đây là một ký tự đơn chứ không phải cho tất cả các ký tự ... –
Và tại sao bạn lại nghĩ vậy? – Tomalak