MS Word 使用类似 RegEx 的通配符编辑格式

MS Word 使用类似 RegEx 的通配符编辑格式

我正在查看高度重复的蛋白质序列,并尝试将特定字母格式化为三字母基序。例如,这是使用氨基酸单字母缩写的序列的简短片段(高度重复):

PGGSGPAAATAAAGSGPSGYGPGASGPVGADAAAAAATGSAGPGRQQAYGPGESGAAAAAASGAGPGRQLGYGPGGSGAAAAAAAGGPGYGGQQGYGPGGAGAAAAAAAGGAGPGRQQTYGPGGSGAAAATAAGGSGPGGYGQGPSGYGPSGPGGQQGYGPGGSGAAAAAAAGEAGPGRQQGYGPRGSGAAAAAAAGGPGYGGQSGYGPGGAGAAAAAAAGGAGPGRQQEYGPGGSGAAAAAAAAAGSG

我想在上述序列中找到所有出现的三个字母的主题(例如 AAA 或 GAA),并更改中间字母的格式(突出显示/下划线/粗体等),但不更改周围的字母。(例如AA 或 GAA)

使用 RegEx,使用查找函数(例如)可以很容易地找到我要查找的内容,(?<=A)[A](?=A)但我发现大多数 RegEx 编辑器不允许您更改返回表达式的格式,只能用另一个表达式替换它们。有没有办法在 Word 中使用内置通配符来实现这一点?或者有没有其他方法可以使用 RegEx 编辑器来做到这一点?

编辑:

作为参考,这张图片正是我想要的。所有突出显示的字母都需要格式化。我不知道如何将其复制到 Word 中以保存突出显示的字母。我已经到了绝望的地步,试图用 OCR 识别这张图片(结果可想而知很糟糕)。

作为参考,这正是我想要的。所有突出显示的字母都需要格式化。

答案1

MS Word 正则表达式引擎的工作方式与其他引擎不同。您可以使用LibreOffice作家来完成你所寻找的。

  • 按 Ctrl+H 打开“查找和替换”窗口
  • 找什么:(?<=G)[A](?=A)|(?<=A)[A](?=A)
  • 用。。。来代替:$0
  • 将光标放在替换框上,单击格式。在字体选项卡上,将样式设置为粗体。单击突出显示选项卡,选择一种颜色。单击确定。
  • 单击“替换”或“全部替换”。

图片:

答案2

在 Word 中,您可以使用以下 VBA 宏:

Sub Bold_codon_middle()
  Dim codon As String: codon = "GAA"
  With Selection.Paragraphs(1).Range
    .Collapse wdCollapseStart
    .Select
  End With
  With Selection.Find
    .MatchCase = True
    Do While .Execute(Forward:=True, FindText:=codon)
      Selection.MoveStart Unit:=wdCharacter, Count:=1
      Selection.MoveEnd Unit:=wdCharacter, Count:=-1
      Selection.Font.Bold = True
      Selection.MoveStart Unit:=wdCharacter, Count:=1
    Loop
  End With
End Sub

将鼠标放在您感兴趣的段落中。
将脚本粘贴到 VBA 模块中。
将值替换codon = "GAA"为您需要的值。
运行脚本。

在此处输入图片描述

但是,我认为您需要检查 3 个字母的堆栈,而不仅仅是文本中的任何位置。以下代码应以 3 个字母为单位检查文本。

Sub Bold_codon_middle()
  Dim codon As String: codon = "GAA"
  With Selection.Paragraphs(1).Range
    .Collapse wdCollapseStart
    .Select
  End With
  With Selection
    Do
      .MoveRight wdCharacter, 3, wdExtend
      If InStr(Selection, vbCr) Then Exit Sub
      If Selection = codon Then
        .MoveStart wdCharacter, 1
        .MoveEnd wdCharacter, -1
        .Font.Bold = True
        .MoveEnd wdCharacter, -2
      End If
      .MoveStart wdCharacter, 3
    Loop
  End With
End Sub

在此处输入图片描述

相关内容