Надеюсь, это будет работать в режиме gs
:
\bCREATE\b[^;]*;
, если бы у нас не было вложенных запросов с ;
или другими дополнительными ;
с.
Тест
const regex = /\bCREATE\b[^;]*;/sg;
const str = `i would ilke to select all substrings from 'CREATE TABLE' to ';' in below string. In this string there should be 2 matches.
CREATE TABLE \`u3g8_student\` (
\`student_id\` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
\`roll_number\` varchar(15) NOT NULL,
\`
) ENGINE=InnoDB AUTO_INCREMENT=1087 DEFAULT CHARSET=utf8;
1.this line should not be matched
CREATE TABLE \`u3g8_student\` (
\`student_id\` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
\`roll_number\` varchar(15) NOT NULL,
\`
) ENGINE=InnoDB AUTO_INCREMENT=1087 DEFAULT CHARSET=utf8;`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Если вы хотите упростить / изменить / изучить выражение, это объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами входных данных.
RegEx Circuit
jex.im визуализирует регулярные выражения: