我有以下正则表达式:
{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]) );