Tôi đã poring over perldoc perlre
cũng như Regular Expressions Cookbook và các câu hỏi liên quan trên Stack Overflow và tôi dường như không thể tìm thấy những gì dường như là một biểu thức rất hữu ích: làm thế nào để tôi biết số lượng phù hợp hiện tại?Có cách nào để đánh giá số lần biểu thức chính quy Perl đã khớp không?
Có biểu hiện cho phù hợp với nhóm khép kín qua ($^N
), nội dung của trận đấu 3 (\g{3}
nếu tôi hiểu các tài liệu một cách chính xác), $'
, $&
và $`
. Nhưng có vẻ như không phải là một biến tôi có thể sử dụng mà chỉ đơn giản là cho tôi biết số lượng của trận đấu hiện tại là gì.
Có thực sự bị thiếu không? Nếu vậy, có bất kỳ lý do kỹ thuật giải thích tại sao nó là một điều khó khăn để thực hiện, hoặc tôi chỉ không đọc perldoc cẩn thận đủ?
Xin lưu ý rằng tôi quan tâm đến biến tích hợp, NOT cách giải quyết như sử dụng (${$count++})
.
Đối với ngữ cảnh, tôi cố gắng tạo biểu thức chính quy chỉ khớp với một số trường hợp khớp (ví dụ: khớp với tất cả các lần xuất hiện của ký tự "E" nhưng KHÔNG khớp với các lần xuất hiện 3, 7 và 10 trong đó 3, 7 và 10 chỉ đơn giản là số trong một mảng). Tôi gặp phải vấn đề này khi cố gắng xây dựng một câu trả lời thành ngữ hơn cho this SO question.
Tôi muốn tránh đánh giá các regex làm chuỗi để chèn 3, 7 và 10 vào chính regex.
Xin lưu ý rằng tôi cần số lần so khớp, không phải # trong số các nhóm đã chụp. – DVK
'Xin lưu ý rằng tôi quan tâm đến biến tích hợp': Nếu nó không nằm trong perloc perlvar, nó có tồn tại không? Tôi đã giả định rằng perlvar chứa các biến tích hợp * tất cả * perl. – TLP
Không có biến nào như vậy. perlvar không ghi lại tất cả các biến tích hợp - ví dụ '@ ISA' không xuất hiện - nhưng mọi thứ đều được ghi lại ở đâu đó. Perl có xu hướng không có chức năng ẩn. Bạn có thể đưa ra một ví dụ về vấn đề bạn đang cố gắng giải quyết tốt hơn so với tham chiếu bạn đưa ra không? – Borodin