2011-05-07 41 views
28

Tôi muốn tìm tất cả các trường sau đây trong notepad ++Regex HOẶC trong notepad ++

action421 
action732 
action983 

nhưng bỏ qua tất cả actionXXX kết hợp khác.

Tôi đang tìm một regex tương tự như action(421)|(732)|(983) nhưng nó không hoạt động. Regex sẽ làm gì?

notepad++ regex engine thậm chí có nhà điều hành OR không?

+3

Công cụ regex notepad ++ kể từ phiên bản 10.1.1 có toán tử OR. –

Trả lời

34

Dường như Don Ho đã thêm RegEx OR | toán tử tới Notepad ++ native Find trong
phiên bản mới nhất của Notepad (ver. 6.1.1).
Tải Notepad 6.1.1 từ here

Cài đặt Notepad 6.1.1, sau đó đi đến Tìm kiếm-> Tìm
Find what: action(421|732|983)
Search Mode: (*) Regular Expression

Bấm vào nút Find Next

+1

Toàn bộ regex đã được tôi thêm vào trong 6.0. Nó đã trải qua nhiều vòng cải tiến và những đóng góp khác (chủ yếu là F.R. Boyer), và khá ổn định, chắc chắn và bạn mong đợi ở 6.3.1. –

8

Hiện tại, bạn có thể sử dụng Notepad> = 10.1.1. Theo Dragos Toader: "Phiên bản mới nhất của ngày hôm nay (Notepad 10.1.1) hỗ trợ | trong RegEx"

== câu trả lời ban đầu dưới ==

Đó là không thể trong Notepad ++. See this answer.

Nhưng regex của bạn không chính xác. Điều này sẽ làm việc: action(421|732|983) nếu Notepad ++ hỗ trợ | trong regex.

+0

Hmm ... Điều này dường như không hoạt động? Không phải trong Notepad ++ của tôi anyway ... ** chỉnh sửa ** @ Jonathan làm việc này cho bạn? – Rudie

+0

Nó không hoạt động - Tôi nghĩ rằng sẽ tìm thấy sự kết hợp của các loại hành động4273283 và action4213983 ... – Jonathan

+0

Không có '(' và ')' có nghĩa là một nhóm. '|' Có nghĩa là 'OR'. Trong PHP, regex này hoạt động hoàn hảo. Trong Notepad ++ tôi không thể làm cho nó hoạt động. Tôi đã cập nhật câu trả lời với một ví dụ trong PHP hoạt động. – Rudie

0

regex của bạn có vẻ đúng. nhưng cố gắng sử dụng này:

action(421|732|983) 
+0

Nó không hoạt động - Tôi nghĩ rằng sẽ tìm thấy sự kết hợp của các loại hành động4273283 và action4213983 ... – Jonathan

1

Notepad ++ doesn't support sự thay đổi luân phiên điều hành |. Bạn có thể thử textfx ctrl + R tùy chọn regexp nhưng tôi nghĩ điều này cũng đúng.

+0

Đúng liên quan đến Scintilla RegEx chức năng là cốt lõi của Notepad ++. Tuy nhiên, hành vi Notepad ++ có thể được sửa đổi bằng cách sử dụng Plugins. Các hoạt động chỉ tìm kiếm hoặc tìm kiếm và thay thế có thể được chuyển hướng đến một chức năng lib Plugin bên ngoài. Plugin Notepad ++ PythonScript hỗ trợ các tìm kiếm Python Regular Expression và tìm kiếm và thay thế các hoạt động. Xem câu trả lời của tôi dưới đây. –

+0

Phiên bản mới nhất hiện nay (Notepad 10.1.1) hỗ trợ | trong RegEx –

7

Bạn có thể sử dụng regex helper plugin cho Notepad ++, nhưng đó là nhiều hơn để phát triển regex thay thế, nhưng nếu bạn chỉ muốn tìm, tôi nghĩ plugin này có thể hữu ích.

enter image description here

+0

Cảm ơn, nhưng tôi thực sự cần các tính năng như "tìm tất cả trong tài liệu hiện tại" và "đếm" mà notepad ++ có ... – Jonathan

+1

@ Jonathan Bạn tìm được tất cả và đếm. Nhìn vào ảnh chụp màn hình. Nó làm nổi bật tất cả và cũng có thể, ở phía dưới bên phải của cửa sổ, bạn sẽ nhận được các trận đấu là số đếm. – manojlds

+0

Bạn nói đúng, tôi vẫn thấy Regex Helper là một công cụ hạn chế – Jonathan

1

Sử dụng PythonScript Notepad ++ plugin cho Python chức năng tìm kiếm Regular Expression.
Xem here cho các chức năng

Editor.pysearch(expression, function[, flags[, startLine[, endLine]]]) 

hoặc

Editor.pymlsearch(expression, function[, flags[, startPosition[, endPosition]]]) 

Dưới đây là một chương trình đơn giản bằng cách sử dụng python thường xuyên chức năng tìm kiếm Biểu editor.pysearch()
tôi đã để lại rất nhiều mã debug trong, do đó bạn có thể thấy những gì đang xảy ra trong quá trình chạy hàm.

# $Revision: 1.3 $ 
# $Author: dot $ 
# $Date: 2012/04/19 00:03:26 $ 

from Npp import * 
import re, string 

expression = notepad.prompt(
       "Enter the RegEx search string then press Enter", 
       "RegEx and Search" , 
       "") 

debug = True 
#debug = False 

if debug: 
    bufferID = notepad.getCurrentBufferID() 

if debug: 
    # Show console for debugging 
    console.clear() 
    console.show() 

if expression != None: 
    expressionSansNl = expression.replace('\r\n', '') 

    if debug: 
     console.write(expression + "\n") 

    # First we'll start an undo action, then Ctrl-Z will undo the actions of the whole script 
    editor.beginUndoAction() 

    if debug: 
     console.write('editor.pysearch(r"%s" % expressionSansNl, None)\n') 

    editor.pysearch(r"%s" % expressionSansNl, None) 

    # End the undo action, so Ctrl-Z will undo the above two actions 
    editor.endUndoAction() 

# Debug 
if debug: 
    notepad.activateBufferID(bufferID) 

Ánh xạ tập lệnh này sang lối tắt Notepad ++ Ctrl+<ChooseALetter> và chạy nó.
Nhập tìm kiếm RegEx action(421|732|983)
Theo tài liệu về lại Python here, toán tử RegEx | được hỗ trợ.

Tôi chưa thử nghiệm điều này - có thể tham số None trong hàm pysearch() cần
là một hàm sẽ chọn chuỗi kết quả.Theo tài liệu here,
, hàm sẽ trả về một MatchObject python. Tôi nghĩ rằng có một cách để có được chuỗi đối sánh
từ MatchObject và chọn giao diện tiếp theo của đối sánh đó
chuỗi trong đối tượng trình chỉnh sửa. Tôi sẽ đăng bản sửa đổi mới của câu trả lời khi tôi đã hoàn tất mã hóa
và kiểm tra điều này.

+0

Câu trả lời này là dành cho các phiên bản Notepad ++ trước 10.1.1. Trong Notepad ++, RegEx OR | có sẵn. –

Các vấn đề liên quan