繁体   English   中英

正则表达式迭代匹配多个单词

[英]Regex match multiple words iteratively

我有这个测试字符串:

{.aa1 .b3c .f4}

我想提取任意数量的以文字点开头的单词. 大括号内。 所以我写了这个JavaScript正则表达式:

/{((?=\.\w+?)(\.\w+?)\s*?)*}/g

我基本上是在向前看(?=\\.\\w+?) ,但是如果有匹配项,因为前瞻宽度为零,所以不会捕获到匹配项,所以我捕获(\\.\\w+?) ,然后考虑空格\\s*? ,然后将所有这些分组,并尝试通过使用*重复进行迭代。 但这不起作用-regex101.com告诉我返回:

MATCH 1
1.  `.f4`
2.  `.f4`

..而我愿意匹配的阵列是( .aa1.b3c.f4 )。 我该如何实现?

您可以尝试以下基于正向前瞻的正则表达式。

string.match(/\.\w+(?=[^{}]*\})/g)

我认为必须正确关闭括号。

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM