查找并替换未用引号括起来的分号

时间:2015-10-08 08:07:12

标签: regex

我有一个多行SQL脚本,我需要在其中替换“;”字符末尾的字符,序列为“\ nGO”,留下“;”它们不在语句的末尾(包含在字符串中的那些)。

这是一个示例文本

mySplitView.PaneBackground = new SolidColorBrush(Colors.Yellow); 

所以我需要在两个<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>xxz</title> <script src="./bower_components/webcomponentsjs/webcomponents.js"></script> <link rel="import" href="./bower_components/polymer/polymer.html"> <link rel="import" href="bower_components/paper-time-picker/paper-time-picker.html"> <link rel="import" href="bower_components/paper-input/paper-input.html"> <link rel="import" href="bower_components/paper-button/paper-button.html"> <link rel="import" href="bower_components/paper-dialog/paper-dialog.html"> <link rel="import" href="bower_components/neon-animation/animations/scale-up-animation.html"> <link rel="import" href="bower_components/neon-animation/animations/fade-out-animation.html"> <dom-module id="my-activity"> <style> :host{ display: block; } </style> <template> Activity <span>{{activity.name}}</span> <paper-button on-click=showAttachedDialog>Time dialog <span>{{activity.time}}</span></paper-button> <paper-dialog id="timeDialog" modal class="paper-time-picker-dialog" entry-animation="scale-up-animation" exit-animation="fade-out-animation"> <h2>Activity name <span>{{activity.name}}</span></h2> <!-- from https://github.com/bendavis78/paper-time-picker --> <paper-time-picker id="startTimePicker"></paper-time-picker> <!--unfortunately paper-time-picker is not a iron-input (is="iron-input") so you can't jut bind to its value--> <!--start time: <paper-input id="time" value="{{activity.time}}"></paper-input>--> <div class="buttons"> <paper-button dialog-dismiss>Cancel</paper-button> <paper-button dialog-confirm autofocus on-tap="confirmTime">OK</paper-button> </div> </paper-dialog> </template> <script> HTMLImports.whenReady(function () { Polymer({ is: "my-activity", activity: Object, listeners: { 'startTimePicker.time-changed': '_onTimeChanged' }, //this is not needed if time is copied in confirmTime _onTimeChanged: function(){ if (this.activity) {//first event is fired before activity is set console.log("time activity: " + this.activity.time+' startTimePicker.time='+ this.$.startTimePicker.time); this.activity.time = this.$.startTimePicker.time; } }, showAttachedDialog: function (event /*id*/) { // that's I can't comprehend // var button = this.$$(id); // if (!button.hasAttribute('data-dialog')) { // return; // } // // var dialogId = '#' + button.getAttribute('data-dialog'); // var dialog = this.$$(dialogId); // if (dialog) { // dialog.open(); // } this.$.timeDialog.open(); }, confirmTime: function () { // this.activity['time'] = this.$$('#timePicker').time; // this.notifyPath('activity.time', this.activity.time); this.activity.time = this.$.startTimePicker.time; console.log("time activity: " + this.activity.time+' startTimePicker.time='+ this.$.startTimePicker.time); } }) }); </script> </dom-module> <dom-module id="my-element"> <template> <paper-button on-click=handleTypesResponse>Kinda call ajax</paper-button> <section> <template is="dom-repeat" items="{{activities}}" as="activity"> <my-activity activity="{{activity}}" /> </template> </section> </template> <script> HTMLImports.whenReady(function () { Polymer({ is: "my-element", handleTypesResponse: function () { this.splice('activities', 0, 3); for (var i = 0; i < 10; i++) { console.log('i=' + i); this.push('activities', {name: 'name'+i, time: new Date()}); } }, ready: function() { this.activities = []; this.push('activities', {name: 'name XXX', time: new Date()}); this.push('activities', {name: 'name YY', time: new Date()}); this.push('activities', {name: 'name ZZ', time: new Date()}); } }); }); </script> </dom-module> </head> <body> <my-element></my-element> </body> </html> 语句的末尾只替换两个分号,将这些分号替换为字符串(wchich是一个SQL命令,但这没关系)。

我试过这个,但它找到了我所有的“;”

Insert into  TABLE1 (A, B) values ('a','b');
Insert into  TABLE2 (COMMAND) values ('/* Script generated at 20.04.2006 12:38:44 */

/* error_permissible = 955*/
Create Table map_encodekey
( privatekey VARCHAR2(30)  NOT NULL
);

/* error_permissible = 2260*/
Alter Table map_encodekey
  Add Constraint map_encodekey_pk
  Primary Key
   (privatekey);
');

你认为正则表达式应该是什么样的?

1 个答案:

答案 0 :(得分:1)

;(?=(?:[^']*'[^']*')*[^']*$)

您可以使用它并替换为\nGO。请参阅演示。

https://regex101.com/r/cJ6zQ3/35