我有这个测试字符串:
{.aa1 .b3c .f4}
我想提取任意数量的以大括号内的文字点.
开头的单词。所以我写了这个JavaScript regex:
/{((?=.w+?)(.w+?)s*?)*}/g
我基本上向前看(?=.w+?)
,但如果有一个匹配,它没有被捕获,因为向前看是零宽度,所以我捕获(.w+?)
,然后允许空间s*?
的可能性,然后我分组所有这些,并尝试通过与*
重复它来迭代。但是它不工作- regex101.com告诉我返回:
MATCH 1
1. `.f4`
2. `.f4`
. .而我想要的匹配数组是(.aa1
, .b3c
。.f4
)。我怎样才能做到这一点呢?
您可以尝试以下基于正向正向的正则表达式。
string.match(/.w+(?=[^{}]*})/g)
我假定括号必须正确关闭。
演示