จะแทนที่สตริงทั้งหมดเป็นตัวเลขที่มีอยู่ในแต่ละสตริงใน Notepad ++ ได้อย่างไร


108

ฉันพยายามค้นหาค่าทั้งหมดด้วยรูปแบบต่อไปนี้:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

และแทนที่ด้วยค่าภายในขอบเขต

ฉันใช้ regex ต่อไปนี้เพื่อค้นหารูปแบบ:

.*"\d+"

ฉันจะเปลี่ยนได้อย่างไร?


2
อะไหล่ทดแทนคืออะไร? ช่วยยกตัวอย่างได้ไหม
Toto

^. * value = "([^"] *) ". * $ ตรวจสอบ regex นี้และตอบกลับค่า \ 1 ตามที่ต้องการ
Nikhil KS

คำตอบ:


191

ใน Notepad ++ เพื่อแทนที่ให้กดCtrl+ Hเพื่อเปิดเมนูแทนที่

จากนั้นหากคุณทำเครื่องหมายที่ปุ่ม "นิพจน์ทั่วไป" และคุณต้องการให้การแทนที่ใช้ส่วนหนึ่งของรูปแบบการจับคู่ของคุณคุณต้องใช้ "การจับกลุ่ม" (อ่านเพิ่มเติมในGoogle ) ตัวอย่างเช่นสมมติว่าคุณต้องการจับคู่แต่ละบรรทัดต่อไปนี้

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

โดยใช้.*"\d+"รูปแบบและต้องการเก็บเฉพาะตัวเลข จากนั้นคุณสามารถใช้กลุ่มการจับภาพในรูปแบบการจับคู่ของคุณโดยใช้วงเล็บ(และเช่นว่า:) .*"(\d+)"ดังนั้นในการแทนที่ของคุณคุณสามารถเขียนได้$1โดยที่ $ 1 อ้างอิงถึงมูลค่าของกลุ่มการจับภาพที่ 1 และจะส่งคืนหมายเลขสำหรับการจับคู่ที่สำเร็จแต่ละครั้ง หากคุณมีสองกลุ่มจับยกตัวอย่างเช่น(.*)="(\d+)", $1จะกลับสตริงvalueและ$2จะกลับมาที่หมายเลข

ดังนั้นโดยใช้:

หา: .*"(\d+)"

แทนที่: $1

มันจะส่งคืนคุณ

4
403
200
201
116
15

โปรดทราบว่ามีวิธีอื่นอีกมากมายในการจับคู่รูปแบบดังกล่าวข้างต้น ตัวอย่างเช่นรูปแบบvalue="([0-9]+)"จะดีกว่าเนื่องจากมีความเฉพาะเจาะจงมากขึ้นและคุณจะมั่นใจได้ว่าจะตรงกับบรรทัดเหล่านี้เท่านั้น เป็นไปได้ที่จะทำการแทนที่โดยไม่ต้องใช้กลุ่มการจับภาพ แต่นี่เป็นหัวข้อขั้นสูงกว่าเล็กน้อยดังนั้นฉันจะปล่อยไว้ตอนนี้ :)


19
สำหรับการแทนที่$1ไม่ได้ผลสำหรับฉัน ฉันใช้\1แทนและได้ผล
Jason Wheeler

12
\1ใช้งานได้กับ Notepad ++ ทุกเวอร์ชัน $1ใช้ได้เฉพาะในรุ่นที่ใหม่กว่าเท่านั้น
Cullub

ฉันเดาว่านี่ใช้ไม่ได้กับHex Editorปลั๊กอิน ในโหมดมุมมองฐานสิบหก Notepad ++ จะไม่แสดงRegular Expressionตัวเลือกสำหรับการค้นหา / แทนที่ ในโหมดดูข้อความฉันเห็นRegular Expressionตัวเลือกสำหรับค้นหา / แทนที่ ฉันใช้ Notepad ++ เวอร์ชัน 6.9.2 ซึ่งเป็นเวอร์ชันปัจจุบันในขณะนี้
Kevin Fegan

15

psxls ให้คำตอบที่ดี แต่ฉันคิดว่าเวอร์ชัน Notepad ++ ของฉันแตกต่างกันเล็กน้อยดังนั้นการจับภาพ $ (เครื่องหมายดอลลาร์) จึงไม่ทำงาน

ฉันมีNotepad ++ v.5.9.3และนี่คือวิธีที่คุณสามารถทำงานให้สำเร็จได้:

ค้นหารูปแบบ: value = \ "([0-9] *) \" และแทนที่ด้วย: \ 1 (สิ่งที่คุณต้องการทำในกลุ่มการจับภาพนั้น)

เช่น ล้อมรอบด้วยวงเล็บเหลี่ยม

[\ 1] -> จะสร้างมูลค่า = "[4]"


1
\1ช่วยฉันเก็บหมายเลขไว้ แต่ลบใบเสนอราคาออก ฉันมีประมาณ 7400 บรรทัดในเอกสารเช่นtablename.columnname = '12345'. คำพูดแรกนั้นง่ายต่อการลบคำพูดที่สองทำได้โดยใช้ของคุณ\1ในกล่องข้อความแทนที่ ขอบคุณ +1
Ben Fransen



-3

หา: value="([\d]+|[\d])"

แทนที่: \1

มันจะคืนคุณจริงๆ

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);

3
โซลูชัน JavaScript นี้เกี่ยวข้องกับคำถามที่ติดแท็กด้วย Notepad ++ อย่างไร
Jason Aller

การตอบสนองที่ผิดพลาดและเสีย 1 และ 2 อาจเกี่ยวข้องกับคำถามที่ติดแท็กด้วย Notepad ++ อย่างไร
user3178007

ทำไมฉันถึงถามคำถามที่นี่? เพราะฉันไม่สามารถสร้างคำถาม เพราะฉันมีคะแนนชื่อเสียงไม่เพียงพอ
user3178007

1
ไม่มีข้อกำหนดด้านชื่อเสียงสำหรับการถามคำถามตามที่คุณอ้างสิทธิ์ - คุณไม่สามารถถูก จำกัด ได้ ลองอีกครั้ง: stackoverflow.com/questions/ask
BoltClock

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