-2

这不是通过正则表达式在 Notepad++ 中替换时如何使用条件的副本,因为我在这里提出了一些非常具体的问题,我无法按照该问题中的信息实现。所以请允许这个问题。

我想用相应的字符范围替换一系列字符。到目前为止,我只能通过多个操作来做到这一点。

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

到目前为止,我想出的是多个替代品,即。

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

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

....

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

Bάτος 将成为 Βάτος

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

4

1 回答 1

1

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”替换它们,只是为了展示它的工作方式。

屏幕截图(之前):

在此处输入图像描述

屏幕截图(之后):

在此处输入图像描述

于 2019-10-23T10:20:37.300 回答