#regex #notepad #regex-lookarounds
#регулярное выражение #notepad #регулярное выражение -поиск
Вопрос:
Я использую notepad
и хотел бы найти контекст, в котором встречается конкретная строка.
Итак, строка поиска 0wh.*0subj
, и я хотел бы найти этот элемент поиска плюс 4 строки непосредственно перед и после него.
eg: xxx means whatever is on a new line. the search result should be:
xxx
xxx
xxx
xxx
0wh.*0subj
xxx
xxx
xxx
xxx
Я пробовал using nr
, но это не работает. Любая предоставленная помощь будет высоко оценена.
С уважением
Комментарии:
1. Это не проблема программирования. По крайней мере, до последнего редактирования. Теперь это выглядит по-другому 😉
2. Если вы используете Notepad , то всякий раз, когда вы находили «0wh. * 0subj» или что-либо, что вы хотите найти, вы также можете видеть четыре строки, предшествующие и после, верно? Зачем вам для этого нужно конкретное регулярное выражение? Собираетесь ли вы его заменить?
Ответ №1:
Это будет работать в Notepad (протестировано):
(?m)(^[^rn]*R ){4}0wh.*0subj[^rn]*R (^[^rn]*R ){4}
На скриншоте обратите внимание, что строка 555 не выбрана. Это просто текущая строка.
Объясните регулярное выражение
(?m) # set flags for this block (with ^ and $
# matching start and end of line) (case-
# sensitive) (with . not matching n)
# (matching whitespace and # normally)
( # group and capture to 1 (4 times):
^ # the beginning of a "line"
[^rn]* # any character except: 'r' (carriage
# return), 'n' (newline) (0 or more times
# (matching the most amount possible))
R # 'R' (1 or more times (matching the most
# amount possible))
){4} # end of 1 (NOTE: because you are using a
# quantifier on this capture, only the LAST
# repetition of the captured pattern will be
# stored in 1)
0wh # '0wh'
. # '.'
* # '*'
0subj # '0subj'
[^rn]* # any character except: 'r' (carriage
# return), 'n' (newline) (0 or more times
# (matching the most amount possible))
R # 'R' (1 or more times (matching the most
# amount possible))
( # group and capture to 2 (4 times):
^ # the beginning of a "line"
[^rn]* # any character except: 'r' (carriage
# return), 'n' (newline) (0 or more times
# (matching the most amount possible))
R # 'R' (1 or more times (matching the most
# amount possible))
){4} # end of 2 (NOTE: because you are using a
# quantifier on this capture, only the LAST
# repetition of the captured pattern will be
# stored in 2)