我有像var Sql=" INSERT INTO DB.SCHEMA.TABLE VALUES(?,?,?)"
这样的字符串我正在使用的正则表达式模式(?<=INSERT INTOb).*;生成结果为DB.SCHEMA.TABLE VALUES(?,?,?).
但是我需要在INSERT INTO之后的第一个单词,在这种情况下是DB.SCHEMA.TABLE.
为了只得到Insert Into
后的第一个单词,我应该在Regex模式中添加什么额外的表达式?可以使用
const text = `var Sql=" INSERT INTO DB.SCHEMA.TABLE VALUES(?,?,?)"`;
const regex = /bINSERTs+INTOs+(w+(?:.w+)*|`[^`]*`)/g;
const results = Array.from(text.matchAll(regex), (x) => x[1]);
console.log(results);
参见regex演示。细节:
bINSERT
-全字INSERT
s+
-一个或多个空白INTO
- andINTO
words+
-一个或多个空白(w+(?:.w+)*|`[^`]*`)
-第1组:出现一个或多个字字符,然后出现0个或多个.
和一个或多个字字符,或者出现一个反勾,出现0个或多个除反勾以外的字符,然后出现一个反勾字符。