我有以下字符串:

Upper and lower ranch milk 125ML (3 * 8)


以及其他1000个格式不同的类似内容。我想将产品(文本部分),音量(125ML)和排序规则((3 * 8))分成单独的变量。

我尝试使用excel和matlab来提出一个功能,但是未能达到预期的效果。我想提出一种聪明的方法,而不是手动筛选每个方法。所有输入表示赞赏。

最佳答案

您可以使用正则表达式,例如^(.*)( \d+ML) +\((.*)\)

说明

^(.*)组1:开头的任何字符

( \d+ML)第2组:一个空格,后跟数字和ML的体积

+\((.*)\)第3组:至少一个空格后括号之间的任何内容

应用于样本字符串

全场比赛Upper and lower 2 ranch milk 125ML (3 * 8)

第1组:Upper and lower 2 ranch milk

第2组:125ML

第3组:3 * 8

Demo

JavaScript中的样本片段

看控制台



function extractInformation(from) {
	var re = /^(.*)( \d+ML) +\((.*)\)/;
	var matches = re.exec(from);
	if(matches) {
		return {
			"title" : matches[1].trim(),
			"volume": matches[2].trim(),
			"collation": matches[3].trim(),
		}
	}
	return {};
}

console.log(extractInformation("Upper and lower ranch milk 125ML (3 * 8)"));
console.log(extractInformation("Upper and lower 123 ranch milk 125ML (3 * 8)"))

07-25 21:40