2010-08-18 34 views
17

Tôi có một bộ đệm emacs chứa văn bảnemacs regexp-builder không hoạt động trong replace-regexp

a1b2c3 

sử dụng regexp-builder, tôi tạo ra regexp

"b\\(2\\)" 

và có thể xem làm nổi bật đối sánh (b2, với màu 2 trong một màu khác). Tuy nhiên,

tuy nhiên, khi tôi dán biểu thức vào replace-regexp, tôi nhận được 0 kết quả phù hợp. cả có và không có dấu ngoặc kép. để có được một trận đấu, tôi cần phải sử dụng

b\(2\) 

tôi đoán có một số thoát đang diễn ra ở đây, nhưng chắc chắn tôi phải làm điều gì đó sai. phải thoát bằng tay dường như đánh bại một nửa điểm.

Trả lời

27

regexp-builder có thể hiển thị regexp theo một số cú pháp. Theo mặc định, nó sử dụng cú pháp thích hợp để đặt vào một nguồn Emacs Lisp (cú pháp read), do đó, regexp được đặt giữa dấu ngoặc kép và mỗi dấu gạch chéo ngược được tăng gấp đôi. Để sử dụng tương tác, hãy chọn cú pháp string với C-c C-i (reb-change-syntax).

+0

gọn gàng, cảm ơn bạn rất nhiều vì gợi ý này – Hartmut

+2

Tôi thực sự bối rối bởi câu trả lời này; Hãy xem xét điều này: 'string [5string] ' bây giờ regexp-builder khớp với" 5 "(" bất kỳ số nào đứng trước dấu ngoặc nhọn mở ") bằng" \\ [[0-9] ". Bây giờ nếu tôi 'M-x query-replace \\ [[0-9] RET plop 'Tôi không nhận được gì cả. Tôi đã thử \\ [\ [0-9 \] (hoạt động trong trình xây dựng), không có gì. Bạn không chỉ ra nơi tôi phải nhập 'C-c C-i': trong trình tạo regexp, trong minibuffer khi đang sử dụng nó, ở nơi khác? Hóa ra nó nằm trong regexp-builder, nhưng sau đó nó cung cấp cho tôi 4 lựa chọn (read, rx, sregex, string) mà tôi nên chọn ** để emacs hiểu cú pháp regexp của chính nó? ** – yPhil

+0

Wow cú pháp bình luận thoát các ký tự thoát, mà sẽ làm cho bình luận về các ký tự thoát khó chịu :) Nghiêm túc, ngay cả trong "mã" đánh dấu, thoát? – yPhil

Các vấn đề liên quan