javascript - 正则表达式:在字符之前,之后提取
问题描述
给定以下字符串
stringData= "goal01=4 goal02=2 goal06=3 goal09=1 goal12=5 goal13=2 goal14=4 planet=52 people=48 Inclusion=4 HealthWellness=2 SustainableInfrastructure=4 ResponsibleConsumption=9 Environment=2"
我需要一个正则表达式来解析以下两个变体
stringColumns = stringData(regex that //fetch before '=' and add ',' to string i.e goal01,goal02,planet etc..)
stringValues= stringData(regex that //fetch after '=' and same as above 4,2,3,52, etc..)
因为我需要将它们拆分以构造一个 sql insert 语句,例如
sqlSyntax = "INSERT INTO [table] ("'+stringColumns+'") VALUES ("'+stringValues+'")"
我试过 ^([^=])+
了,它只匹配第一个goal01
我需要什么来获取所有剩余的?
解决方案
您不需要正则表达式。只需用空格分隔,然后用等号分隔并取出必要的字符:
var stringData = "goal01=4 goal02=2 goal06=3 goal09=1 goal12=5 goal13=2 goal14=4 planet=52 people=48 Inclusion=4 HealthWellness=2 SustainableInfrastructure=4 ResponsibleConsumption=9 Environment=2";
var dataArray = stringData.split(" ")
var stringColumns = dataArray.map(item => item.split("=")[0]).join(",");
var stringValues = dataArray.map(item => item.split("=")[1]).join(",");
console.log(stringColumns);
console.log(stringValues);
这是 ES5 等价物,以防您无法使用 ES6 箭头函数:
var stringData = "goal01=4 goal02=2 goal06=3 goal09=1 goal12=5 goal13=2 goal14=4 planet=52 people=48 Inclusion=4 HealthWellness=2 SustainableInfrastructure=4 ResponsibleConsumption=9 Environment=2";
var dataArray = stringData.split(" ")
var stringColumns = dataArray.map(function(item) {
return item.split("=")[0];
}).join(",");
var stringValues = dataArray.map(function(item) {
return item.split("=")[1];
}).join(",");;
console.log(stringColumns);
console.log(stringValues);
但是,如果您明确希望使用正则表达式来执行此操作,则可以执行以下操作:
var stringData = "goal01=4 goal02=2 goal06=3 goal09=1 goal12=5 goal13=2 goal14=4 planet=52 people=48 Inclusion=4 HealthWellness=2 SustainableInfrastructure=4 ResponsibleConsumption=9 Environment=2";
var stringColumns = stringData.match(/[A-Za-z0-9]+(?==)/g).join(",");
var stringValues = stringData.match(/(?<==)[0-9]+/g).join(",");
console.log(stringColumns);
console.log(stringValues);
推荐阅读
- vb.net - 释放excel的com对象会不会是当前excel关闭前的问题?
- matlab - 使用信号名称显示端口号的 Matlab 脚本
- java - 计算GCD java,为什么我一直得到0?
- c# - 我通过以下 int s 来显示我的报告....因为它给了我错误 Sp_Invoice_Detail' 需要参数'@SaleID',它没有提供
- python - 为什么pyautogui点击没有实际点击
- http - Simple HTTP POST in Go with File Upload
- c# - 错误:尝试读取结果集时遇到致命错误
- php - 从网页获取产品名称时遇到问题
- php - 重定向过多
- visual-studio-code - Visual Studio Code 始终位于首位