NotePad ++ - Tại sao việc tìm kiếm ^ không hoạt động?


16

Tôi đang cố gắng di chuyển khỏi TextPad và tôi không thể nhận được các biểu thức thông thường như ^$được thay thế. Tôi chắc chắn đã đánh dấu vào ô biểu thức chính quy.

Tôi đang làm gì sai?

Tôi đang cố gắng tìm sự bắt đầu của một dòng mới. Trong TextPad, nó được tìm thấy '^' và đảm bảo các biểu thức thông thường được bật. Với Notepad ++, nó không làm điều đó. Nó chỉ nói "Không tìm thấy".


Tôi đã sử dụng TextPad và thấy vấn đề tương tự gây khó chịu (nói một cách nhẹ nhàng). Về cơ bản, chức năng Regex NPP được còi cọc khi comared với hầu hết các khác Regex-s. Điều này xuất phát từ thực tế rằng Npp là một bản tóm tắt của Trình soạn thảo Scintilla sử dụng RegEx dựa trên một dòng duy nhất :( - Đội ngũ Npp nhận thức khá rõ về vấn đề này, nhưng nó (nằm ở phía sau) (vấn đề về thời gian và tài nguyên). $ không hoạt động, nhưng họ không có ^ để làm việc nhiều dòng (chưa). Tôi biết giới hạn này và làm việc với (và khơi dậy nó). Như đã đề cập dưới đây ^ (.) (Hiếm khi, tôi trở lại TPad hoặc UltraEdit)
Peter.O

1
Tái bút bạn thường có thể sử dụng Extended (so với RegEx ) như một cách giải quyết cho \ r và \ n - bán này bắt chước một dòng bắt đầu. Ngoài ra, như một cách tiện lợi, bạn có thể ở lại tìm kiếm Bình thường và bật Chế độ xem - Hiển thị Biểu tượng - Hiển thị Kết thúc Dòng .. Mặc dù chúng không (trực quan) xuất hiện trong trường Tìm kiếm, nếu bạn chọn Trước tiên, CRLF, tính năng tự động tìm trường tự động bắt đầu khi bạn nhấn CTRL + F và nó rất vui khi trở thành tìm kiếm nhiều dòng (nhưng không phải là RegEx). Nó không khác nhiều so với Tìm kiếm mở rộng , nhưng tôi thấy nó rất thú vị và một số độc giả cũng có thể thấy nó như vậy. (Tôi yêu
Npp

Tại sao chính xác là bạn đang cố gắng tìm sự bắt đầu của một dòng mới? Bạn có muốn thêm một cái gì đó ở đầu mỗi dòng? Điều đó sẽ giúp chúng tôi thực sự trả lời câu hỏi. Nếu bạn đang sử dụng Notepad ++ để tránh xa một giải pháp trả phí, bạn sẽ phải tìm hiểu những điều kỳ quặc của nó và làm việc xung quanh chúng. Tôi không gặp vấn đề gì khi làm điều này, vì Notepad ++ rất tốt theo nhiều cách khác.
Joshua Nurchot

Câu trả lời:


25

^ và $ đều là các neo trong Regex, có nghĩa là nếu bạn muốn thay thế các ký tự theo nghĩa đen ^$bạn cần phải thoát chúng, thường là bằng dấu gạch chéo ngược ( \^\$).

Để tìm ký tự đầu tiên trên một dòng sử dụng ^.

Neo dòng bắt đầu ( ^) là một kết hợp có độ rộng bằng không, do đó, kết hợp nó với. sẽ tìm thấy bất kỳ nhân vật ở đầu một dòng.

Có lẽ bạn có thể giải thích những gì bạn đang thực sự làm?


8

Bởi vì đây là những ký tự đặc biệt đại diện cho mặt trước ( ^) và cuối dòng ( $). Hãy thử thoát chúng với a \.

Ví dụ:

Ghép "Cat" ở đầu dòng:

^Cat

Ghép "Cat" ở cuối dòng:

Cat$

Khớp "Cat" như một thứ duy nhất trên một dòng:

^Cat$

Khớp "$ 100" trong một dòng:

\$100 

Đây là một liên kết cho các chi tiết cụ thể về kết hợp biểu thức chính quy trong Notepad ++.


2
Các liên kết dường như bị phá vỡ (có hiệu quả).
Peter Mortensen

5

Tôi đã có cùng một vấn đề bản thân mình. Sau một số thử nghiệm và lỗi, bạn có thể đạt được điều tương tự bằng cách làm như sau:

Tìm: ^ (.)

Thay thế: [chuỗi bạn muốn bạn chèn] \ 1

Điều này sẽ làm là xác định vị trí và gắn thẻ ký tự đầu tiên của dòng, đặt chuỗi mới và đặt ký tự được gắn thẻ sau nó.

Ví dụ: tôi cần chèn một trích dẫn ở đầu mỗi dòng:

Tìm: ^ (.)

Thay thế: '\ 1

Bạn có thể làm tương tự cho đến cuối dòng bằng cách thực hiện:

Tìm: (.) $

Thay thế: \ 1 * [chuỗi bạn muốn nối thêm] *


1

Tôi hiểu rồi.

Trước

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

Sau

  • Albert
  • Lucas
  • Rober_Klein
  • người câu cá

Xóa sau ký tự hoặc văn bản

@ (. *) $

Xóa trước ký tự hoặc văn bản

^ (. *) @

dot = any character
asterisk = zero or more times

1

Đây là cách làm...

Trước:

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

Sau:

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

Vì thế. Trên trường tìm : đặt:

$_GET(.*])

Trên trường thay thế đặt:

htmlentities($_GET\1)

0

Vấn đề dường như đã được khắc phục ngay bây giờ.

Trong Notepad ++ v6.9.2 (chạy trong Windows 7) tôi có cả hai ^(bắt đầu dòng) và $(cuối dòng) hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.