単一のステップではなく、通常のテキストエディタでもありません。SQLが構文的に有効な場合は、次のように実行できます。
まず、SQLからすべての文字列を削除し、プレースホルダーに置き換えます。次に、他のものに置き換え[core]
ます。次に、手順1のプレースホルダーのテキストを復元します。
'(?:''|[^'])+'
withのすべての出現箇所を検索します'n'
。ここn
で、はインデックス番号(一致の番号)です。一致を。と同じ番号の配列に格納しn
ます。これにより、入力からすべてのSQL文字列が削除され、SQL自体を無効にすることなく、無害な置換と交換されます。
- の置き換えを行い
[core]
ます。正規表現は必要ありません。ここでは通常の検索と置換で十分です。
- 配列を繰り返し、プレースホルダー
'1'
を最初の配列項目に置き換え'2'
、2番目の項目を最大で置き換えn
ます。これで、元の文字列が復元されました。
正規表現は、次のように説明しています。
'#一重引用符
(?:#非キャプチャグループを開始します
'' | [^']#2つの一重引用符、または一重引用符以外のもの
)+#グループを終了し、少なくとも1回繰り返します
'#一重引用符
JavaScriptこれは次のようになります。
var sql = 'your long SQL code';
var str = [];
// step 1 - remove everything that looks like an SQL string
var newSql = sql.replace(/'(?:''|[^'])+'/g, function(m) {
str.push(m);
return "'"+(str.length-1)+"'";
});
// step 2 - actual replacement (JavaScript replace is regex-only)
newSql = newSql.replace(/\[core\]/g, "[new-core]");
// step 3 - restore all original strings
for (var i=0; i<str.length; i++){
newSql = newSql.replace("'"+i+"'", str[i]);
}
// done.