NotePad ++ - เหตุใดการค้นหา ^ จึงไม่ทำงาน


16

ฉันกำลังพยายามย้ายออกจากTextPadและฉันไม่สามารถรับนิพจน์ทั่วไปที่ต้องการ^และ$ถูกแทนที่ได้ ฉันทำเครื่องหมายในช่องนิพจน์ปกติแล้ว

ผมทำอะไรผิดหรือเปล่า?

ฉันพยายามค้นหาจุดเริ่มต้นของบรรทัดใหม่ ใน TextPad จะค้นหา '^' และตรวจสอบให้แน่ใจว่านิพจน์ทั่วไปเปิดใช้งานแล้ว ด้วย Notepad ++ มันไม่ทำอย่างนั้น เพียงแค่พูดว่า "ไม่พบ"


ฉันใช้ TextPad และพบปัญหาเดียวกันนี้น่ารำคาญ (เพื่อกล่าวอย่างอ่อนโยน) โดยทั่วไปแล้วฟังก์ชั่น Regex ของ Npp นั้นมีลักษณะแคระแกร็นเมื่อเปรียบเทียบกับ Regex-s อื่น ๆ ส่วนใหญ่ สิ่งนี้เกิดขึ้นจากความจริงที่ว่า Npp เป็นตัวย่อของ Scintilla Editor ซึ่งใช้ RegEx แบบบรรทัดเดียว :( - ทีมงาน Npp ค่อนข้างตระหนักถึงปัญหานี้อยู่แล้ว (ปัญหาเกี่ยวกับเวลาและทรัพยากร) $ ใช้งานได้ แต่พวกเขายังไม่ได้ ^ เพื่อทำงานหลายบรรทัด (ยัง) ฉันรู้ข้อ จำกัด นี้และทำงานกับ (และฟังมัน) ดังที่ได้กล่าวไว้ด้านล่าง ^ (.) . (ไม่ค่อยฉันจะกลับไปใช้ TPad หรือ UltraEdit)
Peter.O

1
PS คุณสามารถใช้Extended (vs RegEx ) เป็นวิธีแก้ปัญหาสำหรับ \ r และ \ n ซึ่งเป็นการเลียนแบบกึ่งเริ่มต้นของบรรทัด นอกจากนี้คุณยังสามารถอยู่ในการค้นหาปกติและเปิดมุมมอง - แสดงสัญลักษณ์ - แสดงจุดสิ้นสุดของบรรทัดแม้ว่าจะไม่ปรากฏ (มองเห็น) ในฟิลด์ค้นหาหากคุณเลือก CRLF ก่อนการค้นหาเฉพาะเขตข้อมูลอัตโนมัติจะเริ่มขึ้นเมื่อคุณกด CTRL + F และมันค่อนข้างมีความสุขที่กลายเป็นการค้นหาแบบหลายบรรทัด (แต่ไม่ใช่ RegEx) ไม่แตกต่างกันมากนักกับการค้นหาแบบขยายแต่ฉันคิดว่ามันน่าสนใจและผู้อ่านบางคนอาจพบว่ามันเป็นเช่นนั้น (ฉันชอบ Npp :)
Peter.O

ทำไมคุณพยายามค้นหาจุดเริ่มต้นของบรรทัดใหม่ คุณต้องการเพิ่มบางอย่างที่จุดเริ่มต้นของทุกบรรทัดหรือไม่ นั่นจะช่วยให้เราตอบคำถามได้จริง หากคุณใช้ Notepad ++ เพื่อที่จะย้ายออกจากโซลูชันที่ต้องชำระเงินคุณจะต้องเรียนรู้นิสัยใจคอและแก้ไขปัญหาเหล่านั้น ฉันไม่มีปัญหาในการทำเช่นนี้เนื่องจาก Notepad ++ ดีมากในหลาย ๆ ด้าน
Joshua Nurczyk

คำตอบ:


25

^ และ $ เป็นทั้งจุดยึดใน Regex ซึ่งหมายความว่าหากคุณต้องการแทนที่ตัวอักษร^และ$คุณต้องหลบหนีพวกเขามักจะมีเครื่องหมายแบ็กสแลชนำหน้า ( \^และ\$)

เพื่อค้นหาตัวอักษรตัวแรกของเส้นที่ใช้ ^.

จุดยึดบรรทัดเริ่มต้น ( ^) เป็นการจับคู่ที่มีความกว้างเป็นศูนย์ดังนั้นการรวมเข้ากับ จะค้นหาอักขระใด ๆ ที่จุดเริ่มต้นของบรรทัด

บางทีคุณสามารถอธิบายสิ่งที่คุณพยายามจะทำจริง ๆ ?


8

เนื่องจากสิ่งเหล่านี้เป็นอักขระพิเศษที่แสดงถึง front ( ^) และ end of line ( $) \ลองหลบหนีพวกเขาด้วย

ตัวอย่าง:

ตรงกับ "Cat" ที่จุดเริ่มต้นของบรรทัด:

^Cat

ตรงกับ "Cat" ที่ท้ายบรรทัด:

Cat$

จับคู่ "Cat" เป็นเพียงสิ่งเดียวในบรรทัด:

^Cat$

จับคู่ "$ 100" ภายในหนึ่งบรรทัด:

\$100 

นี่คือลิงค์สำหรับข้อมูลเฉพาะของการจับคู่นิพจน์ทั่วไปภายใน Notepad ++


2
ดูเหมือนว่าลิงก์จะเสีย (อย่างมีประสิทธิภาพ)
Peter Mortensen

5

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

ค้นหา: ^ (.)

แทนที่: [สตริงที่คุณต้องการแทรก] \ 1

สิ่งนี้จะทำคือค้นหาและแท็กอักขระตัวแรกของบรรทัดใส่ในสตริงใหม่และใส่อักขระที่ติดแท็กหลังจากนั้น

ตัวอย่างเช่นฉันต้องการแทรกเครื่องหมายคำพูดเดี่ยวที่จุดเริ่มต้นของแต่ละบรรทัด:

ค้นหา: ^ (.)

แทนที่: '\ 1

คุณสามารถทำเช่นเดียวกันสำหรับจุดสิ้นสุดของบรรทัดโดยทำ:

ค้นหา: (.) $

แทนที่: \ 1 * [สตริงที่คุณต้องการต่อท้าย] *


1

ฉันเข้าใจแล้ว.

ก่อน

  • Albert@hotmail.com
  • Lucas@gmail.com
  • Rober_Klein@aol.com
  • Fisher@zmail.com

หลังจาก

  • อัลเบิร์
  • ลูคัส
  • Rober_Klein
  • ชาวประมง

ลบหลังจากตัวละครหรือข้อความ

@ (. *) $

ลบก่อนอักขระหรือข้อความ

^ (. *) @

dot = any character
asterisk = zero or more times

1

นี่คือวิธีที่จะทำ ...

ก่อน:

$_GET['id']; $_GET['nick'];

หลังจาก:

htmlentities($_GET['id']); htmlentities($_GET['nick']);

ดังนั้น. ในช่องค้นหาให้ใส่:

$_GET(.*])

บนช่องแทนที่ :

htmlentities($_GET\1)

0

ดูเหมือนปัญหาจะได้รับการแก้ไขแล้ว

ใน Notepad ++ v6.9.2 (ทำงานภายใต้ Windows 7) ฉันได้รับทั้ง^(เริ่มต้นบรรทัด) และ$(สิ้นสุดบรรทัด) เพื่อทำงาน

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