Подтвердить что ты не робот

Регулярное выражение OR в блокноте ++

Я хотел бы найти все следующие экземпляры в блокноте ++

action421
action732
action983

но игнорировать все остальные комбинации actionXXX.

Я ищу регулярное выражение, подобное action(421)|(732)|(983), но оно не работает. Что такое регулярное выражение?

Есть ли механизм notepad ++ regex даже иметь оператор OR?

4b9b3361

Ответ 1

Похоже, Дон Хо добавил RegEx OR | оператора в Notepad ++ native Find в
последней версии "Блокнота" (версия 6.1.1).
Загрузите Notepad 6.1.1 из здесь

Установите Блокнот 6.1.1, затем перейдите к Search- > Найти
Найти что: action(421|732|983)
Режим поиска: (*) Regular Expression

Нажмите кнопку Find Next

Ответ 2

Теперь это возможно в Notepad >= 10.1.1. Согласно Dragos Toader:" Последняя версия на сегодняшний день (Блокнот) 10.1.1) поддерживает | в RegEx

== оригинальный ответ ниже ==

Это невозможно в Notepad ++. См. этот ответ.

Но ваше регулярное выражение неверно. Это будет работать: action(421|732|983), если Notepad ++ поддерживает | в регулярном выражении.

Ответ 3

Вы можете использовать regex helper plugin для Notepad ++, но это больше для разработки регулярных выражений, чем для замены, но если вы просто хотите найти, Я думаю, что этот плагин может быть полезным.

enter image description here

Ответ 4

Notepad ++ не поддерживает оператор чередования |. Вы можете попробовать параметр textfx ctrl + R regexp, но я думаю, что то же самое верно.

Ответ 5

Используйте PythonScript Плагин Notepad ++ для функции поиска регулярных выражений Python.
См. здесь для функций

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

или

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

Здесь простая программа, использующая функцию поиска регулярных выражений python editor.pysearch()
Я оставил много кода отладки, чтобы вы могли видеть, что происходит во время выполнения функции.

# $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)

Скопируйте этот script в Notepad ++ ярлык Ctrl+<ChooseALetter> и запустите его.
Введите поиск RegEx action(421|732|983)
Согласно документации Python rea здесь, поддерживается оператор | RegEx.

Я не тестировал это - возможно, параметр None в функции pysearch() нуждается в чтобы быть функцией, которая выберет результирующую строку. Согласно документам здесь,
функция должна возвращать объект сопоставления python. Я думаю, что есть способ получить сопоставление строки из объекта MatchObject и выбор следующего вида соответствия string в объекте редактора. Я буду публиковать новую ревизию ответа, как только я закончил кодирование
и тестирование этого.

Ответ 6

Ваше регулярное выражение кажется правильным. но попытайтесь использовать это:

action(421|732|983)