Visual Studio, ค้นหาและแทนที่, regex


143

ฉันพยายามแทนที่ทั้งหมด#include "whatever.h"ด้วยการ#include <whatever.h>ใช้การค้นหาและแทนที่การทำงานใน Visual Studio 2005 ฉันใช้ regex \#include \"[a-z\.h]+\"เพื่อค้นหาคำสั่ง include แต่ฉันสงสัยว่าเฟรมแทนที่ regex ได้อย่างไร

\#include \<[a-z\.h]+\>ไม่ทำงานและจะไม่; แทนที่คำสั่งด้วย#include "whatever.h" #include <[a-z.h]+>ฉันจะวางเฟรม regex สำรองไว้whatever.hอย่างไร?

คำตอบ:


225

สำหรับรุ่นก่อน Visual Studio 2012:
มันทำงานได้เมื่อฉันทำเช่นนี้:
ค้นหาinclude "{[a-zA-Z]+\.h}", แทนที่ด้วย
ส่วนที่เกี่ยวข้องมากที่สุดสำหรับคำถามของคุณคือวงเล็บปีกกาและการอ้างอิงด้านหลัง: การอ้างอิงถึงกลุ่ม n'th ที่ระบุด้วยเครื่องหมายปีกกาหยิกในนิพจน์การค้นหาinclude <\1>
{}\1\n

สำหรับเวอร์ชัน Visual Studio 2012 & up:
เริ่มต้นด้วยนิพจน์ปกติ VS2012 .NET Framework ที่ใช้ ดังนั้นจึงควรจะ:
ค้นหาinclude "([a-zA-Z]+\.h)", แทนที่ด้วย
include <$1>


5
สิ่งนี้ดูเหมือนว่าจะแตกต่างจากไวยากรณ์นิพจน์ปกติมาตรฐานซึ่งใช้วงเล็บสำหรับฟังก์ชันนี้
Goblin Alchemist

44
ตอนนี้มันแตกต่างใน Visual Studio 2012 $ 1 ควรใช้แทน \ 1 () ตอนนี้แทนที่ {} สอดคล้องกับคนอื่นมากขึ้นในขณะนี้ msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio

1
ใช้[a-zA-Z0-9_]เพื่อบันทึกชื่อไฟล์เพิ่มเติม
Reinier Torenbeek

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.