Регулярное выражение OR в блокноте ++
Я хотел бы найти все следующие экземпляры в блокноте ++
action421
action732
action983
но игнорировать все остальные комбинации actionXXX
.
Я ищу регулярное выражение, подобное action(421)|(732)|(983)
, но оно не работает. Что такое регулярное выражение?
Есть ли механизм notepad ++ regex даже иметь оператор OR
?
Ответы
Ответ 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)