根据找到的字符进行条件替换

Conditional replace depending on which character is found

这不是 的重复,因为我在这里问的是一些非常具体的问题,我无法按照该问题中的信息实施。所以请允许这个问题。

我想用相应范围的字符替换某个范围的字符。到目前为止,我只能通过多次操作来完成。

例如,匹配 [ABEZHIKMNOPTYXZ] 范围内以大写拉丁字符开头且后跟希腊小写字母 [α-ωά-ώ] 的任何单词,并将第一个匹配组中的字符替换为相似的字符,但在希腊范围内 [ΑΒΕΖΗΙΚΜΝΟΡΤΥΧΖ](注意,它们看起来相同,但字符不同)。

到目前为止我想到的是多个替换,即。

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

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

....

例如: Aνθρώπινος 将变为 Ανθρώπινος

Bìτος 会变成 Βìτος

最好这应该在 EmEditor 中工作,Notepad++ 是第二个选项。

Notepad++支持条件替换,你可以这样使用:

  • 查找内容:(?:(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 个字母 "A" 和 "B" 并用更直观的不同字母 "X" 和 "Y" 替换它们只是为了展示它的工作方式。

屏幕截图(之前):

屏幕截图(之后):