Javascript (我的)SQL create语句上的正则表达式
我使用的是我喜欢且熟悉的旧版本工具, 但它没有在create语句中创建正确的输出。 因为这将是一项重复性的任务,所以我要做一点 网络工具;在JaveScript中制作我的目标正则表达式。我想休息一下 在几位中增加替换项,但我认为1行正则表达式可以 让我走吧,然后我就可以倒着干了 我希望在批处理(或任何单词)之后替换第一个Javascript (我的)SQL create语句上的正则表达式,javascript,mysql,sql,regex,Javascript,Mysql,Sql,Regex,我使用的是我喜欢且熟悉的旧版本工具, 但它没有在create语句中创建正确的输出。 因为这将是一项重复性的任务,所以我要做一点 网络工具;在JaveScript中制作我的目标正则表达式。我想休息一下 在几位中增加替换项,但我认为1行正则表达式可以 让我走吧,然后我就可以倒着干了 我希望在批处理(或任何单词)之后替换第一个'BINARY(16)()。我在RegexBuddy中进行测试,我尝试了:\(\s\w+\s(BINARY\(\d{1,2}\[^,])以及许多其他东西,但没有成功 CREATE
'BINARY(16)
()。我在RegexBuddy中进行测试,我尝试了:\(\s\w+\s(BINARY\(\d{1,2}\[^,])
以及许多其他东西,但没有成功
CREATE TABLE Batch(
batch_id BINARY(16) NOT NULL,
batch_datetime DATETIME,
overhead_project_id BINARY(16) NOT NULL,
PRIMARY KEY (batch_id)
)ENGINE=INNODB;
使用ConvertMe.replace(/(FooStatement/gi,“INT(11)notnull自动递增”);
。
我的最终目标是:(我还必须修复其他create语句上的一些浮点和其他整数)
解决方案:ConvertMe=ConvertMe.replace(/(((\s |\n |\r)\w\s+)(BINARY(\d{1,2})[^,]*)/gi,“$1INT(11)NOT NULL AUTO INCREMENT”);试试这个..我想这就是你想要的
\(?[A-Za-z].+?(BINARY\([0-9]{1,2}\))
按照您的描述方式,您不需要复杂的正则表达式,这并不需要,只需简单的搜索/替换即可:
/BINARY\(16\)/INT\(11\)/g
为了满足您对添加
AUTO_INCREMENT
命令的兴趣,我想提醒您,正则表达式只是一种查找和/或替换字符串的工具。您描述的是不同的;您希望执行两次搜索和一次插入,插入基于第一次搜索。不要让事情变得复杂为您自己复杂化;分别执行这些步骤
主键(*)
,提取*
*
字符串的行,
替换为自动增量,
使用以下javascript:
var re = new RegExp("(\((\s|\n|\r)*\w*\s+)(BINARY\(\d{1,2}\)[^,]*)", "g");
var myArray = str.replace(re,"$1YOUR_REPLACEMENT" );
我不清楚您要匹配的是什么。只是二进制(16)还是行的其余部分?行的其余部分,为清晰起见进行了更新。~t您的表达式应该是
\(\s+\w+\s+(二进制\(\d{1,2}\)[^,]))
,但如果第一个二进制字段不是第一个字段,这仍然无法满足您的要求。很高兴您找到了解决方案。请将其添加到下面作为答案,不要只编辑原始问题。这很有帮助,但我正在尝试匹配(-首先修复主键。这返回了所有主键。我想我们需要将它与二进制匹配的时间限制为1。同时我对它做了一点修改:\(?二进制\([0-9]{1,2}.[^,)]
我不需要触摸列名(批处理id等)我需要能够在PrimaryKey行的末尾添加自动递增。不过,这对其他部分也会有帮助。@intellilogic-(a)很乐意提供帮助,如果你觉得这个(或任何其他答案)有用,请投赞成票。(b)添加AUTO_INCREMENT
将是第二个更复杂的过程。一定要单独执行它们。太棒了,谢谢你和所有帮助过我的人。我太新了,无法投票支持这个答案:(最终结果:ConvertMe=ConvertMe.replace(/(\s | \n | \r)*\w*\s+(二进制(\d{1,2})[^,]*)/gi 1INT(11)NOT NULL AUTO INCREMENT)“是的,$1是”(批次号),而$2是空的,因此我将整个匹配项替换为“$1_uuuuuyourr_uuuureplacement_uuuuuuuu”,也许有更干净的解决方案,但我的解决方案有效
var re = new RegExp("(\((\s|\n|\r)*\w*\s+)(BINARY\(\d{1,2}\)[^,]*)", "g");
var myArray = str.replace(re,"$1YOUR_REPLACEMENT" );