Làm cách nào để thay thế tất cả các chuỗi thành các số có trong mỗi chuỗi trong Notepad ++?


108

Tôi đang cố gắng tìm tất cả các giá trị với mẫu sau:

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

và thay thế nó bằng giá trị bên trong phạm vi.

Tôi đang sử dụng regex sau để tìm mẫu:

.*"\d+"

Tôi có thể thay thế bằng cách nào?


2
Bộ phận thay thế là gì? Bạn có thể cho một ví dụ?
Toto

^. * value = "([^"] *) ". * $ kiểm tra regex này và đặt lại giá trị \ 1 nơi giá trị cần thiết
Nikhil KS

Câu trả lời:


191

Trong Notepad ++ để thay thế, nhấn Ctrl+ Hđể mở menu Thay thế.

Sau đó, nếu bạn chọn nút "Biểu thức chính quy" và bạn muốn thay thế của mình sử dụng một phần của mẫu đối sánh, bạn phải sử dụng "nhóm nắm bắt" (đọc thêm trên google ). Ví dụ: giả sử bạn muốn đối sánh từng dòng sau

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

bằng cách sử dụng .*"\d+"mẫu và chỉ muốn giữ lại số. Sau đó bạn có thể sử dụng một nhóm chụp trong mô hình phù hợp với bạn, sử dụng dấu ngoặc đơn (), như vậy: .*"(\d+)". Vì vậy, bây giờ thay thế của bạn, bạn có thể chỉ cần viết $1, trong đó $ 1 tham chiếu đến giá trị của nhóm bắt đầu tiên và sẽ trả về số cho mỗi trận đấu thành công. Ví dụ: nếu bạn có hai nhóm nắm bắt (.*)="(\d+)", $1sẽ trả về chuỗi value$2sẽ trả về số.

Vì vậy, bằng cách sử dụng:

Tìm thấy: .*"(\d+)"

Thay thế: $1

Nó sẽ trả lại bạn

4
403
200
201
116
15

Xin lưu ý rằng có nhiều cách thay thế và tốt hơn để khớp với mẫu đã nói ở trên. Ví dụ: mẫu value="([0-9]+)"sẽ tốt hơn, vì nó cụ thể hơn và bạn sẽ chắc chắn rằng nó sẽ chỉ khớp với những đường này. Thậm chí có thể thực hiện thay thế mà không cần sử dụng các nhóm chụp, nhưng đây là một chủ đề nâng cao hơn một chút, vì vậy tôi sẽ để nó ngay bây giờ :)


19
Đối với thay thế, $1không làm việc cho tôi. Tôi đã sử dụng \1thay thế và điều đó đã hoạt động.
Jason Wheeler

12
\1Hoạt động trên tất cả các phiên bản của Notepad ++. $1chỉ hoạt động trong những cái mới hơn.
Cullub

Tôi đoán điều này không hoạt động với Hex Editorplugin. Ở chế độ xem hex, Notepad ++ không hiển thị Regular Expressiontùy chọn Tìm kiếm / Thay thế. Trong chế độ xem văn bản, tôi thấy Regular Expressiontùy chọn Tìm kiếm / Thay thế. Tôi đang sử dụng Notepad ++ Phiên bản 6.9.2, là phiên bản hiện tại tại thời điểm này.
Kevin Fegan

15

psxls đã đưa ra một câu trả lời tuyệt vời nhưng tôi nghĩ rằng phiên bản Notepad ++ của tôi hơi khác nên tính năng thu $ (ký hiệu đô la) không hoạt động.

Tôi có Notepad ++ v.5.9.3 và đây là cách bạn có thể hoàn thành nhiệm vụ của mình:

Tìm kiếm mẫu: value = \ "([0-9] *) \" Và thay thế bằng: \ 1 (bất cứ điều gì bạn muốn làm xung quanh nhóm chụp đó)

Ví dụ. Bao quanh bằng dấu ngoặc vuông

[\ 1] -> sẽ tạo ra giá trị = "[4]"


1
\1Đã giúp tôi giữ số nhưng bỏ phần trích dẫn đằng sau nó. Tôi có khoảng 7400 dòng trong một tài liệu như thế nào tablename.columnname = '12345'. Trích dẫn đầu tiên rất dễ xóa, trích dẫn thứ hai được thực hiện bằng cách sử dụng của bạn \1trong hộp văn bản thay thế. Cảm ơn, +1
Ben Fransen

6

Thay thế (.*")\d+(")

Với $1x$2

Trong trường hợp xlà "bên trong giá trị phạm vi" của bạn.


0

Tôi có Notepad ++ v6.8.8

Tìm thấy : [([a-zA-Z])]

Thay thế : [\ '\ 1 \']

Sẽ tạo ra: $ array [XYZ] => $ array ['XYZ']


-3

Tìm thấy: value="([\d]+|[\d])"

Thay thế: \1

Nó thực sự sẽ trả lại bạn

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
Giải pháp JavaScript này có liên quan như thế nào đến câu hỏi đã được gắn thẻ với Notepad ++?
Jason Aller

Các câu trả lời bị lỗi, bị hỏng 1 và 2 có thể liên quan như thế nào đến câu hỏi đã được gắn thẻ với Notepad ++?
user3178007 Ngày

Tại sao tôi lại đặt câu hỏi ở đây? Bởi vì tôi không thể tạo câu hỏi. Bởi vì tôi không có đủ điểm danh tiếng.
user3178007 Ngày

1
Không có yêu cầu về danh tiếng đối với việc đặt câu hỏi như bạn yêu cầu - bạn không thể bị hạn chế. Hãy thử lại: stackoverflow.com/questions/ask
BoltClock

Câu hỏi đã được đặt ra. stackoverflow.com/questions/24112018/… Nhưng giới hạn về từ để tìm kiếm. Giới hạn là!
user3178007 Ngày
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.