Visual Studio Code Search และแทนที่ด้วย Regular Expressions


116

ฉันต้องการที่จะใช้ "ค้นหาและแทนที่" ใน Visual Studio รหัสที่จะเปลี่ยนทุกกรณีของ <h1>content</h1>การ#### contentภายในเอกสารโดยใช้นิพจน์ปกติ

ฉันจะทำมันให้สำเร็จได้อย่างไร?


2
มันต้องเป็น regex ค้นหาและแทนที่? คุณสามารถแทนที่<h4>ด้วย#### แล้วแทนที่</h4>ด้วย''?
Brett East

คำตอบ:


191

เป้าหมายของคุณคือการค้นหาและแทนที่?
ตามแป้นพิมพ์ช็อตคัท pdf อย่างเป็นทางการของ Visual Studio คุณสามารถกดCtrl + HบนWindowsและLinuxหรือ⌥⌘FบนMacเพื่อเปิดใช้งานเครื่องมือค้นหาและแทนที่:

แท็บค้นหาและแทนที่รหัส Visual Studio ถ้าคุณหมายถึงการปิดการใช้งานรหัสคุณเพียงแค่ต้องใส่ในการค้นหาและแทนที่การ<h1>####

แต่ถ้าคุณต้องการที่จะใช้ regex นี้แทนคุณอาจเปิดใช้งานได้ในไอคอน: . *และใช้ regex นี้และแทนที่ไปที่:<h1>(.+?)<\/h1>#### $1

และตามที่@tparteeแนะนำนี่คือข้อมูลเพิ่มเติมเกี่ยวกับเอ็นจิ้นของ Visual Studio หากคุณต้องการเรียนรู้เพิ่มเติม:


3
Visual Studio จะจัดการ regex เหมือนกับแอปพลิเคชันอื่น ๆ ข้อแตกต่างเพียงอย่างเดียวคือรสชาติ regex ซึ่งเป็น 'คอมไพเลอร์' ของ regex และจะปฏิบัติต่อนิพจน์อย่างไร โดยปกติคำตอบเหล่านี้จะถูกเพิกเฉยเนื่องจากคำตอบส่วนใหญ่ค่อนข้างคล้ายกัน แต่สำหรับผู้ที่ยังต้องการตรวจสอบฉันได้เพิ่มคำตอบไว้ในคำตอบแล้ว
Mateus

2
คำถามเกี่ยวกับ Visual Studio Code และคำตอบนี้เกี่ยวกับ Visual Studio
Dustin Wyatt

1
หรือเปลี่ยนการเชื่อมโยงคีย์ของคุณ ตัวอย่าง: โดย IDEA Keybindings ( marketplace.visualstudio.com/… ) คุณสามารถใช้: Ctrl + Shift + R สำหรับแทนที่ในเส้นทางหรือสำหรับ Find In Path: Ctrl + Shift + F
SL5net

6

สำหรับผู้เริ่มต้นฉันต้องการเพิ่มคำตอบที่ได้รับการยอมรับเนื่องจากรายละเอียดปลีกย่อยบางอย่างไม่ชัดเจนสำหรับฉัน:

ในการค้นหาและแก้ไขข้อความ (ไม่แทนที่ทั้งหมด)

  1. ในขั้นตอน "ค้นหา" คุณสามารถใช้นิพจน์ทั่วไปกับ "การจับกลุ่ม" เช่นการค้นหาของคุณโดยla la la (group1) blah blah (group2)ใช้วงเล็บ

  2. และจากนั้นในขั้นตอน "แทนที่" คุณสามารถอ้างถึงกลุ่มจับผ่าน$1, $2ฯลฯ

ตัวอย่างเช่นในกรณีนี้เราสามารถค้นหาข้อความที่เกี่ยวข้องได้โดยใช้เพียง<h1>.+?<\/h1>(ไม่มีวงเล็บ) แต่การใส่ในวงเล็บ<h1>(.+?)<\/h1>ช่วยให้เราสามารถอ้างถึงการจับคู่ย่อยที่อยู่ระหว่างพวกเขา$1ในขั้นตอนการแทนที่ เย็น!

หมายเหตุ

  • หากต้องการเปิด Regex ใน Find Widget ให้คลิก.*ไอคอนหรือกดCmd/Ctrl Alt R

  • $0 หมายถึงการแข่งขันทั้งหมด

  • สุดท้ายคำถามเดิมระบุว่าการแทนที่ควรเกิดขึ้น "ภายในเอกสาร" คุณจึงสามารถใช้ "ค้นหาวิดเจ็ต" ( CmdหรือCtrl+ F) ซึ่งเป็นแบบโลคัลของเอกสารที่เปิดอยู่แทนที่จะเป็น "ค้นหา" ซึ่งจะเปิด UI ที่ใหญ่ขึ้น และดูไฟล์ทั้งหมดในโครงการ


0

ตรวจสอบให้แน่ใจว่าได้เลือก Match Case ด้วย Use Regular Expression เพื่อให้ตรงกับ [AZ] * หากไม่ได้เลือกกรณีการจับคู่จะตรงกับตัวอักษรทั้งหมด


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