我有以下正则表达式:

{thing:([^}]*)}


这完全匹配'{thing:'和'}',并在中间允许任何!}。

在C#中,我只能使用以下内容来抓取中间的内容:

regex.Matches(stringToCheckForMatches).Cast<Match>().Select(x => x.Groups[1].Value);


有没有等效的方法可以在TypeScript中获取这些中间内容?还要注意,stringToCheckForMatches可以包含{thing:}关键字的多个实例(带有任何中间内容)。

例如,我想要这样:

'fooBar/{thing:hi}{thing:hello}'


要返回(最好在数组/列表中),只需执行以下操作:

hi
hello


另外,如果您无法访问TypeScript中的.match捕获(我确实不确定),是否可以将正则表达式更改为仅捕获“ {thing:”之后和“}”之前的内容的内容?那也可以。

最佳答案

通过正则表达式拆分会导致["fooBar/", "hi", "", "hello", ""]



console.log( 'fooBar/{thing:hi}{thing:hello}'.split(/{thing:([^}]*)}/) );





filter可用于获取奇数元素:



console.log( 'fooBar/{thing:hi}{thing:hello}'.split(/{thing:([^}]*)}/).filter((_, i) => i & 1) );





要么



console.log( 'fooBar/{thing:hi}{thing:hello}'.split(/.*?{thing:(.*?)}.*?/).filter(Boolean) );







没有正则表达式的替代方法:



var str = 'fooBar/{thing:hi}{thing:hello}'

console.log( str.split('{thing:').slice(1).map(s => s.split('}')[0]) );

07-24 09:43