Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何重复捕获一个组?_Regex - Fatal编程技术网

Regex 如何重复捕获一个组?

Regex 如何重复捕获一个组?,regex,Regex,假设我有以下字符串 Bimkingo Clasico Prom 135g LON 49835 Gansito ME 5p 250g MTA MLA 49860 Wonder 我只想提取不包含数字或大写字母的标记 输出应该是 Bimkingo Clasico Prom Gansito Wonder 这似乎不起作用:\b([a-zA-Z]+)\b使用: (\b[A-Z]?[a-z]+\b)+ 并从regexp库中检索所有组(因为无法在单个组中提供),并使用空格将它们连接起来 测试用例:以下正则

假设我有以下字符串

Bimkingo Clasico Prom 135g LON 49835 Gansito ME 5p 250g MTA MLA 49860 Wonder
我只想提取不包含数字或大写字母的标记

输出应该是

Bimkingo Clasico Prom Gansito Wonder
这似乎不起作用:
\b([a-zA-Z]+)\b

使用:

(\b[A-Z]?[a-z]+\b)+
并从regexp库中检索所有组(因为无法在单个组中提供),并使用空格将它们连接起来

测试用例:

以下正则表达式
(\b[a-zA-Z]+[a-Z]+\b)
对于OP的post和其他边缘案例中的输出示例,应按预期工作:

var string='Bimkingo Clasico Prom 135g LON 49835 Gansito ME 5p 250g MTA MLA 49860 Wonder';
var regexp=/(\b[a-zA-Z]+[a-Z]+\b)+/g;
var matches=string.match(regexp);
var output=“Bimkingo Clasico Prom Gansito Wonder”;
log('匹配OP提供的测试输出“'+output+'”:');
console.log(输出===matches.join(“”),“\n”);
console.log(“”);//新线
//OP的示例输出字符串中不包含案例。。。
变量字符串='mArceLino mArceLino';
log('还匹配所有小写和大写中间词“'+string+'”:','\n');
var matches=string.match(regexp);
console.log(matches.length==2);
console.log(“”);//新线
变量字符串='MARCEL1N0 MARCELINO11';
log('排除所有数字混合为“'+string+'”:'的大写字母);
var matches=string.match(regexp);

log(匹配项===null)请发布您所提供字符串的预期输出。语法荧光笔似乎能识别您想要的单词。(([a-zA-Z]+)似乎很奇怪,mb您的意思是([a-zA-Z]+)?@AlexanderDavydov,它只会捕获Bimkingo。@MadPhysicator您是对的。我也注意到了这一点,但不幸的是,我无法访问突出显示源代码的语法:pah,所以关键是
g
global选项?但我如何在正则表达式中创建g选项?没关系,您也说过要从正则表达式库中检索组。这个答案无法解释“只提取不包含数字或仅包含大写字母的标记”,在OP的示例输出中未表示的边缘大小写中。有关更详细的解释,请参阅我的答案。