Visual Studio, Temukan dan ganti, regex

143

Saya mencoba untuk mengganti semua #include "whatever.h"dengan #include <whatever.h>menggunakan fungsi find and replace di Visual Studio 2005. Saya menggunakan regex \#include \"[a-z\.h]+\"untuk menemukan pernyataan include. Tapi saya bertanya-tanya bagaimana bingkai ganti regex.

\#include \<[a-z\.h]+\>tidak bekerja dan tidak mau; itu menggantikan pernyataan #include "whatever.h"dengan #include <[a-z.h]+>. Bagaimana saya membingkai regex ganti agar tetap whatever.hseperti sekarang?

bdhar
sumber

Jawaban:

225

Untuk versi sebelum Visual studio 2012:
Ini berfungsi ketika saya melakukan ini:
temukan include "{[a-zA-Z]+\.h}",
ganti dengan include <\1>.
Bagian yang paling relevan untuk pertanyaan Anda adalah kurung kurawal {}dan referensi belakang \1: \nreferensi ke grup ke-n yang ditunjukkan oleh kurawal kurawal dalam ekspresi pencarian.

Untuk versi Visual studio 2012 & lebih tinggi:
Memulai dengan VS2012 .NET Framework ekspresi reguler digunakan. Jadi harus ada:
temukan include "([a-zA-Z]+\.h)",
ganti dengan include <$1>.

Miel
sumber
5
Ini tampaknya berbeda dari sintaks ekspresi reguler standar yang menggunakan tanda kurung untuk fungsi ini.
Goblin Alchemist
44
Sekarang berbeda di Visual Studio 2012. $ 1 harus digunakan sebagai ganti \ 1. () sekarang menggantikan {}. Lebih konsisten dengan orang lain sekarang. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio
1
Gunakan [a-zA-Z0-9_]untuk mengambil lebih banyak nama file.
Reinier Torenbeek
1

Anda harus memilih Match Case dan Regular Expressions untuk ekspresi regex dengan case. Lain [az] tidak akan bekerja.masukkan deskripsi gambar di sini

David Morrow
sumber