Visual Studio, Tìm và thay thế, regex


142

Tôi đang cố gắng thay thế tất cả #include "whatever.h"bằng #include <whatever.h>cách sử dụng chức năng tìm và thay thế trong Visual Studio 2005. Tôi đã sử dụng biểu thức chính quy \#include \"[a-z\.h]+\"để tìm câu lệnh bao gồm. Nhưng tôi đang tự hỏi làm thế nào khung regex thay thế.

\#include \<[a-z\.h]+\>đã không làm việc và sẽ không; nó thay thế câu lệnh #include "whatever.h"bằng #include <[a-z.h]+>. Làm thế nào để tôi đóng khung regex thay thế để giữ nguyên whatever.hnhư vậy?

Câu trả lời:


225

Đối với các phiên bản trước Visual studio 2012:
Nó hoạt động khi tôi thực hiện việc này:
tìm include "{[a-zA-Z]+\.h}",
thay thế bằng include <\1>.
Các phần có liên quan nhất cho câu hỏi của bạn là dấu ngoặc nhọn {}và tham chiếu phía sau \1: \ntham chiếu đến nhóm thứ n được biểu thị bằng dấu ngoặc nhọn trong biểu thức tìm kiếm.

Đối với các phiên bản Visual studio 2012 trở lên:
Bắt đầu với VS2012 .NET Framework, các biểu thức thông thường được sử dụng. Vì vậy, nó nên được:
tìm include "([a-zA-Z]+\.h)",
thay thế bằng include <$1>.


5
Điều này dường như khác với cú pháp biểu thức chính quy tiêu chuẩn sử dụng dấu ngoặc đơn cho chức năng này.
Nhà giả kim yêu tinh

44
Bây giờ nó đã khác trong Visual Studio 2012. Nên sử dụng $ 1 thay vì \ 1. () bây giờ thay thế {}. Nhất quán hơn với mọi người khác bây giờ. msdn.microsoft.com/en-us/l
Library / 2k3te2cs (v = vs.110) .aspx

1
Sử dụng [a-zA-Z0-9_]để chụp nhiều tên tệp hơn.
Rebier Torenbeek

1

Bạn cần chọn cả Trường hợp khớp và Biểu thức chính quy cho biểu thức regex với trường hợp. Khác [az] sẽ không làm việc.nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.