Условная замена в зависимости от того, какой символ найден - PullRequest
0 голосов
/ 21 октября 2019

Это НЕ дубликат Как использовать условные выражения при замене в Notepad ++ через regex , так как я здесь задаю что-то очень конкретное, что я не могу реализовать, следуя информации в этом вопросе. Поэтому, пожалуйста, разрешите этот вопрос.

Я хочу заменить диапазон символов соответствующим диапазоном символов. Пока что я могу сделать это только с несколькими операциями.

Например, сопоставить любое слово, которое начинается с заглавной буквы латинского алфавита в диапазоне [ABEZHIKMNOPTYXZ], за которым следует греческая строчная буква [α-ωά-ώ], и заменитьперсонаж в первой подобранной группе с похожим персонажем, но в греческом диапазоне [ΑΒΕΖΗΙΚΜΝΟΡΤΥΧΖ] (обратите внимание, они выглядят одинаково, но это разные символы).

До сих пор я обнаружил несколько замен,то есть.

(A)([α-ωά-ώ])
Α\2

(B)([α-ωά-ώ])
Β\2

....

Так, например: AνθρώπινοΑ станет Ανθρώπινος

Bάτος станет Βάτος

Предпочтительно, это должно работать в EmEditor, Notepad ++ является вторым вариантом.

1 Ответ

2 голосов
/ 23 октября 2019

Блокнот ++ поддерживает условную замену, вы можете использовать его следующим образом:

  • Найти что: (?:(A)|(B)|(E)|(Z)|(H)|(I)|(K)|(M)|(N)|(O)|(P)|(T)|(Y)|(X)|(Z))(?=[α-ωά-ώ])
  • Заменить на: (?{1}Α:(?{2}Β:(?{3}Ε:(?{4}Ζ:)))) добавить другие греческие буквы аналогично

Замена:

(?:             # start non capture group
(?{1}           # if group 1 exists "A"
  Α             # replace with greek letter
  :             # else
  (?{2}         # if group 2 exists "B"
    Β           # replace with greek letter
    :           # else
    (?{3}       # and so on ...
      Ε
      :
      (?{4}
        Ζ
        :
      )
    )
  )
)
)               # end non capture group
(?=             # positive lookahead, make sure we have after:
    [α-ωά-ώ]    # a small greek letter
)               # end lookahead

Я сделал тест, но только для 2 букв «А» и «В» и заменил их на болеевизуально различайте буквы "X" и "Y", чтобы показать, как это работает.

Снимок экрана (до):

enter image description here

Снимок экрана (после):

enter image description here

...