Tôi muốn để có thể phân tích cú pháp đường dẫn tập tin như thế này một:Regular Expression để phù hợp với số lượng không giới hạn các lựa chọn
/var/www/index.(htm|html|php|shtml)
vào một mảng ra lệnh:
array("htm", "html", "php", "shtml")
và sau đó tạo ra một danh sách các lựa chọn thay thế :
/var/www/index.htm
/var/www/index.html
/var/www/index.php
/var/www/index.shtml
Hiện tại, tôi có tuyên bố preg_match
có thể chia tách hai lựa chọn:
preg_match_all ("/\(([^)]*)\|([^)]*)\)/", $path_resource, $matches);
ai đó có thể cho tôi một con trỏ cách mở rộng này để chấp nhận một không giới hạn số lựa chọn thay thế (ít nhất là hai)? Chỉ liên quan đến biểu thức chính quy, phần còn lại tôi có thể giải quyết.
Quy tắc là:
Danh sách này cần phải bắt đầu với một
(
và gần gũi với một)
Phải có một
|
trong danh sách (tức là ít nhất hai lựa chọn thay thế)Bất kỳ lần xuất hiện nào khác của
(
hoặc)
vẫn không bị ảnh hưởng.
Cập nhật: tôi cần để có thể cũng phải đối phó với nhiều cặp khung như:
/var/(www|www2)/index.(htm|html|php|shtml)
xin lỗi tôi không nói rằng ngay lập tức.
Cập nhật 2: Nếu bạn đang tìm kiếm để làm những gì tôi đang cố gắng để làm trong hệ thống tập tin, sau đó lưu ý rằng glob() đã mang lại chức năng này ra khỏi hộp. Không cần phải thực hiện một solutiom tùy chỉnh. Xem câu trả lời của @ Gordon bên dưới để biết chi tiết.
Tại sao các địa ngục là tất cả mọi người * * bị ám ảnh ** với regex? Chỉ cần sử dụng một phương pháp damn khác. Kết hợp mọi thứ sau một khung là ** không khó ** nếu không có regex. –
@Coronatus chỉ cho tôi một phương thức không regex trọng lượng nhẹ, thanh lịch có thể xử lý nhiều cặp dấu ngoặc và 2. bỏ qua bất kỳ cặp khung nào không chứa '|', và trông không giống như shit, và tôi ' ll sẵn sàng vẽ mũ của tôi cho bạn. –
Xong. Xem câu trả lời của tôi. –