我有这样的文字:
D5 0.25 8;0.25 E5 0.25 8;0.5 F#5 1 8;1.5 E5 1 8;2.5 D5 1 8;3.5 B4 1 8;4.5 A4
只不过,它有 800 个字符长...例如,我想获取 D5 和 E5 之间的文本,并将其替换为一个空格。所以它看起来像这个 D5 E5,但正如我所说,每个值都不同。
答案1
只要“D5”和“E5”不出现在块内,您就可以使用正则表达式:
搜索:D5.*?E5
替换为:D5 E5
记得启用正则表达式搜索模式
答案2
鉴于我将其识别为 MIDI 数据,我假设您想要删除除其音符之外的所有 midi 数据(以空格分隔)。
您将需要使用以下正则表达式模式:
搜索([A-Z]#*.).+?;.+?
(注意末尾的空格。我使用了 ALT+255,因为否则 SuperUser 会将其删除。)
并替换:(\1
还要注意末尾的空格,还有 ALT+255。)
它将进行除最后一个音符之外的所有替换,除非末尾也有空格。
正则表达式解释:
( - Start Capture group
[A-Z] - Search for any char between A and Z, exactly 1 time
#* - Search for a # 0 or more times
. - Search for any character exactly 1 time.
) - End capture group
------------------
The above search will result in the midi note, eg A3 and store it in \1
.+? - Continue to search for any character 1 or more times in non-greedy way.
; - Search until we find the first ;
.+? - Search for any character 1 or more times in non-greedy way.
- search until we find a space.