@@ -16,6 +16,7 @@ package main
1616import (
1717 "database/sql"
1818 "regexp"
19+ "strings"
1920 "time"
2021
2122 "github.com/pingcap/errors"
@@ -51,6 +52,22 @@ func OpenDBWithRetry(driverName, dataSourceName string, retryCount int) (mdb *sq
5152 return
5253}
5354
55+ func processEscapes (str string ) string {
56+ escapeMap := map [string ]string {
57+ `\n` : "\n " ,
58+ `\t` : "\t " ,
59+ `\r` : "\r " ,
60+ `\\` : "\\ " ,
61+ `\/` : "/" ,
62+ }
63+
64+ for escape , replacement := range escapeMap {
65+ str = strings .ReplaceAll (str , escape , replacement )
66+ }
67+
68+ return str
69+ }
70+
5471func ParseReplaceRegex (originalString string ) ([]* ReplaceRegex , error ) {
5572 var begin , middle , end , cnt int
5673 ret := make ([]* ReplaceRegex , 0 )
@@ -63,10 +80,13 @@ func ParseReplaceRegex(originalString string) ([]*ReplaceRegex, error) {
6380 }
6481 cnt ++
6582 switch cnt % 3 {
83+ // The first '/'
6684 case 1 :
6785 begin = i
86+ // The second '/'
6887 case 2 :
6988 middle = i
89+ // The last '/', we could compile regex and process replace string
7090 case 0 :
7191 end = i
7292 reg , err := regexp .Compile (originalString [begin + 1 : middle ])
@@ -75,7 +95,7 @@ func ParseReplaceRegex(originalString string) ([]*ReplaceRegex, error) {
7595 }
7696 ret = append (ret , & ReplaceRegex {
7797 regex : reg ,
78- replace : originalString [middle + 1 : end ],
98+ replace : processEscapes ( originalString [middle + 1 : end ]) ,
7999 })
80100 }
81101 }
0 commit comments