ค้นหา CRLF ใน Notepad ++


316

ฉันจะค้นหา / แทนที่อักขระ CR / LF ทั้งหมดใน Notepad ++ ได้อย่างไร

ฉันกำลังมองหาบางสิ่งที่เทียบเท่ากับอักขระพิเศษ ^ p ใน Microsoft Word


เพียงแค่สร้างสิ่งเล็ก ๆ น้อย ๆ ที่ 'แฮ็กเกอร์แฮ็กเกอร์' พูดถึง เราใช้ ULtraEdit-32 กับงานและทำงานกับไฟล์ EDI (x.12) เรามักจะต้องห่อหรือแกะข้อมูล สตริงการค้นหาและแทนที่ที่พบมากที่สุด 2 รายการคือ "^ p" & "~" การไปทางเดียวจะแทนที่ "~" ด้วย CR / LF เพื่อการอ่านที่ง่ายขึ้นของแต่ละเซ็กเมนต์ การใช้วิธีอื่นจะทำให้ไฟล์กลับเป็นรูปแบบที่นักแปล EDI ต้องการ สำหรับคนขี้เกียจอย่างตัวฉันฉันแค่เอาแผนที่เหล่านั้นมาใส่กุญแจเพื่อให้ใช้งานง่าย
DavidGrove

1
แม้ว่าจะไม่เกี่ยวข้องกัน แต่ก็มีประโยชน์ ฉันเข้าเยี่ยมชมหน้านี้หลังจากค้นหาวิธีแปลงไฟล์ข้อความ UNIX เป็นรูปแบบ Windows ใน Windows นี่คือสิ่งที่ฉันทำและทำงานอยู่CTRL+Hให้เลือก "โหมดค้นหา: นิพจน์ปกติ" "ค้นหาอะไร: $" และ "แทนที่ด้วย: \ r" คัดลอกวางเนื้อหาลงใน Notepad หรือบันทึกลงดิสก์
Guru

2
เย้! Notepad ++ 6.0 นำการสนับสนุนของ PCRE: regex เหมือน[\r\n]+ตอนนี้ใช้งานได้ ฉันได้อัปเดตคำตอบของฉันแล้วและจะเฉลิมฉลอง!
VonC

@VonC: ฉันเดาว่าฉันจำเป็นต้องอัปเดตคำตอบ [notepad ++] ทั้งหมดของฉันด้วย :)
BoltClock

ดูเหมือนว่าไม่มีใครพูดถึงลำดับการหลบหนี \Rซึ่งตรงกับบรรทัดใหม่ทั่วไป นั่นคือสิ่งที่ถือว่าเป็นลำดับ LINEBREAK ...
Bubble Bobble

คำตอบ:


412

[\r\n]+ ควรทำงานด้วย

อัปเดตมีนาคม 26, 2012, วันที่ออกNotepad ++ 6.0 :

OMG ตอนนี้ใช้งานได้จริง !!!

PCRE regexp ใน Notepad ++


คำตอบเดิม 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

ที่จริงไม่ดูเหมือนจะไม่ทำงานกับ regexp ...

แต่ถ้าคุณมี Notepad ++ 5.x คุณสามารถใช้ ' ขยาย ' \r\nโหมดการค้นหาและมองหา CRLFที่ไม่พบของคุณทั้งหมด

(ฉันรู้ว่านี่เป็นคำตอบเดียวกับที่อื่น ๆ แต่อีกครั้ง 'โหมดขยาย' จะใช้ได้เฉพาะกับ Notepad ++ 4.9, 5.x และอื่น ๆ )


ตั้งแต่เมษายน 2009 คุณมีบทความวิกิบนไซต์ Notepad ++ ในหัวข้อนี้:
" วิธีการแทนที่จุดสิ้นสุดของบรรทัดจึงเปลี่ยนเค้าโครงบรรทัด "
(กล่าวถึงโดยgeorgiecaseyในคำตอบของเขา / เธอด้านล่าง )

สารสกัดที่เกี่ยวข้องบางอย่างรวมถึงกระบวนการค้นหาต่อไปนี้:

ค้นหาง่าย ( Ctrl+ F), โหมดค้นหา =Normal

คุณสามารถเลือกEOLในหน้าต่างแก้ไข

  • เพียงเลื่อนเคอร์เซอร์ไปที่ท้ายบรรทัดแล้วพิมพ์Shift+ RightArrow
  • หรือหากต้องการเลือกEOLด้วยเมาส์ให้เริ่มที่ปลายบรรทัดแล้วลากไปที่จุดเริ่มต้นของบรรทัดถัดไป การลากไปทางขวาEOLจะไม่ทำงาน คุณสามารถคัดลอกEOLและวางมันลงในฟิลด์สำหรับไฟล์ Unix ( LF- เท่านั้น)

ค้นหาง่าย (Ctrl + F), โหมดการค้นหา = ขยาย

ตัวเลือก "ขยาย" จะแสดง\nและ\rเป็นอักขระที่สามารถจับคู่ได้
เช่นเดียวกับโหมดค้นหาปกติ Notepad ++ กำลังค้นหาอักขระที่แน่นอน
การค้นหา\rในไฟล์รูปแบบ UNIX จะไม่พบอะไรเลย แต่การค้นหาความ\nประสงค์ ในทำนองเดียวกันไฟล์แมคอินทอชรูปแบบจะมีแต่ไม่\r\n

ค้นหาอย่างง่าย (Ctrl + F), โหมดการค้นหา = นิพจน์ทั่วไป

นิพจน์ทั่วไปใช้อักขระ^และ$เพื่อยึดสตริงการจับคู่กับจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัด ตัวอย่างเช่นการค้นหาreturn;$จะค้นหาสิ่งที่เกิดขึ้นเป็น "return;" ที่เกิดขึ้นโดยไม่มีข้อความที่ตามมาในบรรทัดเดียวกัน อักขระจุดยึดทำงานเหมือนกันในทุกรูปแบบไฟล์
The '.' dot metacharacter ไม่ตรงกับจุดสิ้นสุดของบรรทัด

[ทดสอบใน Notepad ++ 5.8.5]: การค้นหานิพจน์ปกติที่มีอย่างชัดเจน\rหรือ\nไม่ทำงาน (ตรงกันข้ามกับเอกสารประกาย )
ไม่ทำการค้นหาใน LF (วาง) ชัดเจนหรืออักขระ EOL (ที่มองไม่เห็น) ที่วางอยู่ในฟิลด์เมื่อเลือก EOL การค้นหาขั้นสูง ( Ctrl+ R) โดยไม่มี regexp

Ctrl+ Mจะแทรกสิ่งที่ตรงกับบรรทัดใหม่ พวกเขาจะถูกแทนที่ด้วยสตริงแทนที่
ฉันแนะนำวิธีนี้ว่าเชื่อถือได้มากที่สุดเว้นแต่คุณจะต้องใช้ regex จริงๆ
ตัวอย่างเช่นหากต้องการลบบรรทัดใหม่ทุกวินาทีในไฟล์เว้นวรรคสองให้ป้อนCtrl+ Mสองครั้งในกล่องสตริงการค้นหาและหนึ่งครั้งในกล่องสตริงแทนที่

การค้นหาขั้นสูง ( Ctrl+ R) ด้วย Regexp

ทั้งCtrl+ Mและ$ไม่\r\nตรงกัน


วิกิเดียวกันยังกล่าวถึงตัวเลือกแก้ไข Hex :

  • พิมพ์สตริงใหม่ที่จุดเริ่มต้นของเอกสาร
  • จากนั้นเลือกที่จะดูเอกสารในโหมดฐานสิบหก
  • เลือกหนึ่งในสายใหม่และตี+CtrlH
  • ขณะที่คุณมีกล่องโต้ตอบแทนที่อยู่ให้เลือกพื้นหลังของสตริงการแทนที่ใหม่และCtrl+ Cคัดลอกเพื่อวางในการแทนที่ด้วยการป้อนข้อความ
  • จากนั้นแทนที่หรือแทนที่ทั้งหมดตามที่คุณต้องการ

หมายเหตุ: 0aตัวละครที่เลือกไว้สำหรับบรรทัดใหม่มักจะปรากฏเป็น
อาจมีค่าแตกต่างกันหากไฟล์อยู่ในรูปแบบ Windows ในกรณีที่คุณสามารถไปที่และหลังจากเปลี่ยนสลับกลับEdit -> EOL Conversion -> Convert to Unix FormatEdit -> EOL Conversion -> Convert to Windows Format


1
ฉันใช้งาน 4.7 อัปเกรดเป็นเวอร์ชันใหม่ล่าสุดและโหมดขยายใช้งานได้ตามที่โฆษณาไว้ ขอบคุณทุกคนที่ตอบกลับ
polara

+1: ฉันใช้ 4.6 และมีปัญหาคล้ายกัน และด้วยคำตอบของคุณฉันได้อัปเกรดเป็น 5+ ขอบคุณ!
paercebal

มันได้ผล! แต่สิ่งนี้ทำให้ Notepad ++ RegExp ดูด UltraEdit-32 ฉลาดขึ้นคุณแค่ต้องการ \ n และคุณทำงานของคุณเสร็จแล้ว ...
thenonhacker

\ r \ n ใช้งานได้สำหรับฉัน แต่ไม่ใช่ \ n ซึ่งเป็นแบบต่อต้านหากคุณเป็นนักพัฒนาที่คุ้นเคยกับ \ n กำลังจดจ่อกับ \ r \ n
Warren P

2
@GarretWilson ฉันยืนยันว่าใช้[^\r]\nงานได้ดี (การค้นหา regex): i.stack.imgur.com/PxZWD.png
VonC

22

ดูเหมือนว่านี่เป็นคำถามที่พบบ่อยและความละเอียดที่เสนอคือ:

ค้นหาง่าย (Ctrl + H) โดยไม่ต้อง regexp

คุณสามารถเปิด View / Show End of Line หรือดู / Show All และเลือกอักขระขึ้นบรรทัดใหม่ที่มองเห็นได้ในขณะนี้ จากนั้นเมื่อคุณเริ่มคำสั่งอักขระบางตัวที่ตรงกับอักขระบรรทัดใหม่จะถูกวางลงในช่องค้นหา การจับคู่จะถูกแทนที่ด้วยสตริงแทนที่ซึ่งต่างจากในโหมด regex

หมายเหตุ 1: หากคุณเลือกพวกเขาด้วยเมาส์เริ่มต้นก่อนพวกเขาและลากไปที่จุดเริ่มต้นของบรรทัดถัดไป การลากไปที่ท้ายบรรทัดจะไม่ทำงาน

หมายเหตุ 2: คุณไม่สามารถคัดลอกและวางลงในฟิลด์ด้วยตัวเอง

การค้นหาขั้นสูง (Ctrl + R) โดยไม่ต้อง regexp

Ctrl + M จะแทรกสิ่งที่ตรงกับบรรทัดใหม่ พวกเขาจะถูกแทนที่ด้วยสตริงแทนที่


2
คุณสามารถใช้ Ctrl + M เพื่อแทรกบรรทัดใหม่ในสตริงแทนที่ได้เช่นกัน
s Dusty Campbell

2
มันเป็นคำถามที่พบบ่อยเพราะมันเป็นหูดที่มีการออกแบบเล็กน้อยในผลิตภัณฑ์ที่ยอดเยี่ยม
Warren P

11

ในกล่องโต้ตอบแทนที่คุณต้องการตั้งค่าโหมดการค้นหาเป็น "ขยาย" โหมดนิพจน์ปกติหรือปกติจะไม่ทำงาน

จากนั้นเพียงแค่หา "\ r \ n" (หรือเพียงแค่ \ n สำหรับไฟล์ unix หรือเพียงแค่ \ r สำหรับไฟล์ฟอร์แมต Mac) และตั้งค่าแทนที่เป็นสิ่งที่คุณต้องการ


คำตอบนี้ล้าสมัยเมื่อเขียน - Mac ไม่ได้ใช้\rมาตั้งแต่ปี 2001 ... (ตอนนี้ unix)
Jasper

9

ฉันโชคไม่ดีกับ \ r \ n นิพจน์ทั่วไปจากหน้าต่างค้นหา / แทนที่

อย่างไรก็ตามการทำงานใน Notepad ++ v4.1.2:

  1. ใช้เมนู "ดู | แสดงจุดสิ้นสุดของบรรทัด" เพื่อเปิดใช้งานการแสดงจุดสิ้นสุดของอักขระบรรทัด (ตัวดึงข้อมูลบรรทัดการขึ้นบรรทัดใหม่ควรแสดงเป็น 'อักขระ' CRLF แบบเงาเดียว)

  2. เลือกหนึ่งใน 'ตัวละคร' ของ CRLF (วางเคอร์เซอร์ไว้ข้างหน้าหนึ่งตัวกดแป้น SHIFT ค้างไว้แล้วกดปุ่ม RIGHT CURSOR หนึ่งครั้ง)

  3. คัดลอกอักขระ CRLF ไปยังคลิปบอร์ด

  4. ตรวจสอบให้แน่ใจว่าคุณไม่ได้เปิดกล่องโต้ตอบค้นหาหรือค้นหา / แทนที่

  5. เปิดไดอะล็อกค้นหา / แทนที่ ฟิลด์ 'ค้นหาว่ามีอะไร' แสดงเนื้อหาของคลิปบอร์ด: ในกรณีนี้อักขระ CRLF - ซึ่งแสดงเป็น 2 'กล่องอักขระ' (สันนิษฐานว่าเป็นอักขระที่ไม่สามารถพิมพ์ได้?)

  6. ตรวจสอบให้แน่ใจว่าตัวเลือก 'นิพจน์ปกติ' ปิด

ตอนนี้คุณน่าจะสามารถนับค้นหาหรือแทนที่ได้ตามต้องการ



4

วิธีที่ฉันพบว่าใช้งานได้คือการใช้ฟังก์ชั่นแทนที่และใช้ "\ n" ด้วยโหมด "ขยาย" ฉันใช้เวอร์ชั่น 5.8.5


1
หนึ่งในไม่กี่รายการในหน้านี้ที่ใช้งานได้ ใช้ notepadd ++ 5.8.6 มันยากที่จะเชื่อสิ่งที่เรียบง่ายแบบนี้ควรจะต้องใช้จำนวนของคำตอบที่ซับซ้อนมากเกินไปและบ่อยครั้งที่คำตอบที่ไม่ได้ใช้งานที่ได้รับในหัวข้อนี้
Andrew S

4

ในปี 2013, v6.13 หรือใหม่กว่าใช้:

เมนูแก้ไขEOL แปลง → รูปแบบของ Windows


สิ่งนี้ไม่ครอบคลุมกรณีทั่วไปของการแทนที่ CRLF ด้วยอักขระหนึ่งตัวหรือมากกว่า หรือแทนที่อักขระหนึ่งตัวขึ้นไปด้วย CRLF (พูดแทนที่อักขระเว้นวรรคด้วย CRLF)
Peter Mortensen

2

สมมติว่ามีการค้นหา "นิพจน์ทั่วไป" ให้มองหา \ r \ n ฉันชอบ \ r? \ n เนื่องจากไฟล์บางไฟล์ไม่ได้ใช้ carriage return

แก้ไข: ขอบคุณสำหรับความคิดเห็นใครก็ตามที่ลงคะแนนให้ ฉันได้เรียนรู้ว่า ... ดีไม่มีอะไรเพราะคุณไม่ได้ให้ข้อเสนอแนะ ทำไมมันผิด


1
ฉันไม่แน่ใจว่าทำไมมันไม่ทำงาน แต่มันไม่ได้ ฉันสมมติว่าการติดตั้ง regex นี้ (ใน Notepad ++) จะตรวจสอบทีละบรรทัดเท่านั้นและไม่สนใจอักขระบรรทัดใหม่ใด ๆ นั่นอาจเป็นเหตุผลที่คุณถูกโหวต
ตรงไปตรงมา hadder

1
อ๋อ regex เป็นบรรทัดต่อบรรทัดใน notepad ++ ดังนั้นคุณสามารถจับคู่ตำแหน่งที่ EOL ด้วย $ แต่ไม่สามารถค้นหา / แทนที่นิพจน์ที่ข้ามขอบเขตของบรรทัดได้
Warren P

2

ใช้ตัวเลือกการค้นหาขั้นสูง ( Ctrl+ R) และใช้แป้นพิมพ์ลัดสำหรับ CRLF ( Ctrl+ M) เพื่อแทรกการขึ้นบรรทัดใหม่


Ctrl + R ไม่ทำงานสำหรับฉันเมื่อฉันลอง มันแทรกตัวควบคุมที่แปลกประหลาดในเอกสาร " DC2" รุ่น Notepad ++: 7.5.6 (2018-05-19)
Peter Mortensen

2

หากคุณต้องการเปลี่ยน regexp แบบซับซ้อนรวมถึง \ r \ n คุณสามารถแก้ไขข้อ จำกัด ได้ด้วยวิธีการสามขั้นตอน:

  1. แทนที่\r\nด้วยแท็กสมมติว่า#GO#→ตรวจสอบ 'ขยาย' แทนที่\r\nด้วย#GO#
  2. ดำเนินการ regexp ของคุณเช่นลบหลายบรรทัดICON="*"จากที่คั่นหน้า html →ตรวจสอบ regexp แทนที่ICON=.[^"]+.> by >
  3. ใส่กลับ \ r \ n →ตรวจสอบ 'ขยาย' แทนที่#GO#ด้วย\r\n


1

ทำการตั้งค่านี้ เมนู -> ดู -> แสดงสัญลักษณ์ -> ยกเลิกการเลือก Show End of the Line


1
นี่ไม่ได้ตอบคำถามเดิม โปรดอธิบายว่าเพราะเหตุใดคุณจึงคิดว่านี่เป็นประโยชน์ที่มีประโยชน์สำหรับคำถาม & คำตอบนี้ โปรดอ่านหน้าศูนย์ช่วยเหลือเกี่ยวกับวิธีหาคำตอบที่เป็นประโยชน์
AdrianHHH

1

ฉันเปิดไฟล์ใน Notepad ++ และทำการทดแทนในไม่กี่ขั้นตอน:

  1. แทนที่ "\ r \ n" ทั้งหมดด้วย "\ r \ n"
  2. แทนที่ทั้งหมด "; \ r \ n" ด้วย "\ r \ n"
  3. แทนที่ "\ r \ n" ทั้งหมดด้วย ""

สิ่งนี้ทำให้การหยุดพักทั้งหมดที่ควรจะเป็นและลบสิ่งที่ทำให้ไฟล์แตก

มันใช้งานได้สำหรับฉัน


1

ฉันไม่สามารถทำสิ่งนี้ได้ใน NP v6.9 ฉันพบว่ามันง่ายพอใน Msoft Word (2K)

เปิดเอกสารไปที่ edit-> replace

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


0

เพียงทำ \ r ด้วยการค้นหาและแทนที่ด้วยช่องว่างในฟิลด์แทนที่เพื่อให้ทุกอย่างไปถึงหนึ่งบรรทัด จากนั้นทำการค้นหาและแทนที่ (ในกรณีของฉันด้วยเซมิโคลอน) และแทนที่ด้วย; \ n

:) -T & C


1
สิ่งนี้แตกต่างจากคำตอบเดิมอย่างไร?
คนงานทุกคนสำคัญมาก

0

หากต้องการเปลี่ยนเอกสารของบรรทัดแยกเป็นบรรทัดเดียวโดยแต่ละบรรทัดสร้างหนึ่งรายการในรายการที่คั่นด้วยเครื่องหมายจุลภาค:

  1. ctrl+ fเพื่อเปิดการค้นหา / replacer
  2. คลิกที่แท็บ "แทนที่"
  3. กรอกข้อมูล "ค้นหาอะไร" ด้วย " \r\n"
  4. เติมรายการ "แทนที่ด้วย" ด้วย " ," หรือ " ," (ขึ้นอยู่กับการตั้งค่า)
  5. ยกเลิกการทำเครื่องหมายในช่องทำเครื่องหมาย "จับคู่ทั้งคำ" (บิตที่สำคัญซึ่งจะทำให้ตรรกะ)
  6. ตรวจสอบปุ่มตัวเลือก "ขยาย"
  7. คลิกปุ่ม "แทนที่ทั้งหมด"

ขั้นตอนเหล่านี้จะเปลี่ยนไปเช่น

foo bar

บาร์บาซ

baz foo

เป็น:

foo bar, บาร์ baz, baz foo

หรือ: (ขึ้นอยู่กับความชอบ)

foo bar, บาร์ baz, baz foo


0

บางทีคุณสามารถใช้ปลั๊กอิน TextFX

ใน TextFX ไปที่ textfx edit →ลบบรรทัดว่าง


0

ในการค้นหาลำดับการแบ่งบรรทัดใด ๆ ให้ใช้โครงสร้าง regex ต่อไปนี้:

\R

เพื่อค้นหาและเลือกติดต่อกันลำดับแบ่งบรรทัดเพิ่ม+หลังจากที่:\R\R+

ตรวจสอบให้แน่ใจว่าคุณเปิดโหมดการแสดงผลปกติ :

ป้อนคำอธิบายรูปภาพที่นี่

มันตรงกับ:

  • U+000DU+000A -ลำดับ CRLF`
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.