サクラエディタの置換で、パタンマッチした数値にオフセットを加算するVBSマクロです。
Perlなら1行で容易にできますが、サクラエディタ上でやりたくて適当に組んでみました。
Option Explicit
Call Main
Sub Main()
Dim Buf, L, R, Ofs
Dim re, mc, m
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = False
'パタンとオフセットは目的に合わせて編集
re.Pattern = "^(.*?\()(\d+)(.*)$"
Ofs = 10
If Editor.IsTextSelected() = 0 Then
Editor.SelectAll()
End If
Buf = Split(GetSelectedString, vbCrLf)
Editor.Delete
For Each L In Buf
Set mc = re.Execute(L)
If mc.Count > 0 Then
Set m = mc(0)
R = R & m.SubMatches(0) & m.SubMatches(1)+Ofs & m.SubMatches(2) & vbCrLf
Else
R = R & L & vbCrLf
End If
Next
Editor.InsText(R)
Call Editor.ReDraw(0)
End Sub
Call Main
Sub Main()
Dim Buf, L, R, Ofs
Dim re, mc, m
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = False
'パタンとオフセットは目的に合わせて編集
re.Pattern = "^(.*?\()(\d+)(.*)$"
Ofs = 10
If Editor.IsTextSelected() = 0 Then
Editor.SelectAll()
End If
Buf = Split(GetSelectedString, vbCrLf)
Editor.Delete
For Each L In Buf
Set mc = re.Execute(L)
If mc.Count > 0 Then
Set m = mc(0)
R = R & m.SubMatches(0) & m.SubMatches(1)+Ofs & m.SubMatches(2) & vbCrLf
Else
R = R & L & vbCrLf
End If
Next
Editor.InsText(R)
Call Editor.ReDraw(0)
End Sub
適用例
置換前文字列:
insert into [TABLE] values(1, 10, 100);
insert into [TABLE] values(2, 10, 100);
insert into [TABLE] values(2, 10, 100);
置換後文字列:
insert into [TABLE] values(11, 10, 100);
insert into [TABLE] values(12, 10, 100);
insert into [TABLE] values(12, 10, 100);
置換後文字列に計算結果を指定したい場合ReplaceAllが使えないため、VBの構文を使うしかなさげです。