2012-05-18 16 views
15

Nếu tập tin của bạn chứaSử dụng regex lookahead, egrep

apples are good 
apple cider is also good 

Tại sao egrep '(?=apples)app' file sẽ không nhận bất kỳ dòng?

Sử dụng egrep 2.5.1 trên MAC

Trả lời

16

Biểu thức chính quy mở rộng không có tính năng tích cực phía trước. Xem the regex flavor comparison

+0

Trên mac OS, bạn có thể nhận GNU grep (có hỗ trợ PCRE) thông qua [homebrew-dupes] (https://github.com/Homebrew/homebrew-dupes) –

+3

Liên kết ở trên dường như không còn có một "so sánh hương vị regex". Đó là cơ bản bây giờ chỉ là một trang web hawking chương trình "Regex Buddy" cho $ 39,95. Tôi nghĩ rằng một cái gì đó giống như so sánh hương vị có sẵn ở đây: http://www.greenend.org.uk/rjk/tech/regexp.html nhưng nó là đáng kinh ngạc khó tìm thấy thông tin về điều này. –

+5

Bạn có thể thực hiện điều này trên Linux bằng cách sử dụng cờ '-P': ** - P, --perl-regexp: Giải thích PATTERN dưới dạng biểu thức chính quy Perl. Điều này là rất thử nghiệm và grep -P có thể cảnh báo về các tính năng chưa được thực hiện. ** Điều bất thường là phiên bản BSD (Mac, Darwin, vis-a-vis năm 2010) tham chiếu '-P' tiếp diễn ở cuối tài liệu nhưng không không xác định nó như một lá cờ có thể sử dụng được. Người dùng Mac có thể tải xuống phiên bản [Grep at the Gnu] mới hơn (http://www.gnu.org/software/grep/). Thật đáng ngạc nhiên là ngay cả OS X 10.9 cũng đi kèm với một phiên bản cũ với nhiều lỗi. – ingyhere