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