我不是一个正规表达专家,至少可以说。我正在寻找的是一个正则表达式,它从字符串中提取特定格式的多个值。正则表达式从字符串中提取多个格式化值
例字符串: “客户[记录:客户ID]从[记录:CityID]的类型为[记录:TYPEID]”
我需要的是,让我所有的值在此字符串是一个表达式格式为“[record:XXXXX]”。因此,在这个例子中它会给我:
[ “客户ID”, “CityID”, “TYPEID”]
能不能做到?
我不是一个正规表达专家,至少可以说。我正在寻找的是一个正则表达式,它从字符串中提取特定格式的多个值。正则表达式从字符串中提取多个格式化值
例字符串: “客户[记录:客户ID]从[记录:CityID]的类型为[记录:TYPEID]”
我需要的是,让我所有的值在此字符串是一个表达式格式为“[record:XXXXX]”。因此,在这个例子中它会给我:
[ “客户ID”, “CityID”, “TYPEID”]
能不能做到?
在Javascript中:
var pattern = '\\[record:([a-zA-Z0-9]+)\\]';
var records = new RegExp(pattern, 'g');
var extract = new RegExp(pattern);
var string = "Customer [record:CustomerID] from [record:CityID] is of type [record:TypeID]"
var matches = string.match(records);
console.log(matches);
> [ '[record:CustomerID]',
'[record:CityID]',
'[record:TypeID]' ]
var records = [];
for (var i=0; i<matches.length; i++) {
var match = matches[i].match(extract);
records.push(match[1]);
}
console.log(records)
> [ 'CustomerID',
'CityID',
'TypeID' ]
可能不是最简洁的解决方案,但干净,(希望)理解。
\
在他们面前被转义()
,形成了一个正则表达式组/子模式[a-zA-Z0-9]+
装置“匹配一串字母(大写或小写)或数字”,+
指定“长度为一个或多个”。 A *
这里的意思是“长度为0或更长”。这里我使用了两个基于相同模式的正则表达式。它们使用不同的选项进行编译:g
标志告诉正则表达式查找字符串中的所有匹配项。有了这个标志,我们就不会得到与结果匹配的组,只是匹配的整个字符串。第二个正则表达式编译时没有g
标志,所以我们可以使用它来提取匹配的组。
其实,像sed
可以做的伎俩,即:
echo "Customer ..." | sed -e 's/\][^[]*\[record:/","/'g -e 's/^.*record:/["/' -e 's/].*$/"]/
是否使用了特定的语言?你可以用正则表达式来做你想做的事情,但这取决于你使用的结构和语言。 – npinti
我正在寻找一个解决方案在JavaScript中。 –