Có vẻ như bạn đang cố gắng làm những điều không mong muốn tiêu cực. tức là bạn đang cố gắng ngừng kết hợp khi bạn đạt đến một số dấu phân cách.
Emacs không hỗ trợ trực tiếp, nhưng nó hỗ trợ phiên bản không tham lam của *, + và? toán tử (* ?, + ?, ??), có thể được sử dụng cho cùng một mục đích trong hầu hết các trường hợp.
Vì vậy, ví dụ, để phù hợp với cơ thể của hàm javascript này:
bar = function (args) {
if (blah) {
foo();
}
};
Bạn có thể sử dụng emacs regex:
function ([^)]+) {[[:ascii:]]+?};
Ở đây chúng ta đang dừng lại khi chúng tôi tìm ra chuỗi hai yếu tố "};". [[: ascii:]] được sử dụng instad của "." bởi vì nó hoạt động trên nhiều dòng.
Đây là một chút khác biệt so với cái nhìn tiêu cực vì}; trình tự nó khớp với nhau, tuy nhiên nếu mục tiêu của bạn là trích xuất mọi thứ cho đến thời điểm đó, bạn chỉ cần sử dụng nhóm chụp \ (và \).
Xem hướng dẫn emacs regex: http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html
Là một mặt lưu ý, nếu bạn viết bất kỳ loại emacs regex, hãy chắc chắn để gọi Mx tái xây dựng, trong đó sẽ đưa lên một chút IDE để viết regex của bạn chống lại bộ đệm hiện tại.
Tôi nghĩ đó là GNU ERE. – Gumbo
@Gumbo. bạn nói đúng, cảm ơn – Anycorn
Nhấp vào thẻ "regex-negation" để xem một số câu hỏi tương tự. – finnw