gpt4 book ai didi

javascript - 在一组中匹配量化单词字符多次

转载 作者:行者123 更新时间:2023-11-30 14:22:28 24 4
gpt4 key购买 nike

这让我发疯。该字符串如下所示:

actionname {componentOne, componentTwo, componentThree}

在这个例子中,我应该匹配组 actionnamecomponentOnecomponentTwocomponentThree。当然,确切数量括号内的“组件”我不会知道,它至少是一个,但也可能是多个。

我试过:

\w+

初学者级别,匹配所有,包括actionname。这可能符合目的,但还有更好的解决方案,

^actionname\s*{\s*(\w+)+\s*.*}

该死的,只匹配一个,在本例中为 componentOne,即使我已经使用量词来匹配组 (\w+)+

^actionname\s*{\s*(\w+)(:?\s*\,\s*(\w+)|\s*})

这就是失败的重点。我能够将匹配扩展到第二个组件,但只是声明性地,即我不能将组扩展到尽可能多的单词(由 , 分隔,带有可选空格)是。所有出现的正则表达式都带有 gm 修饰符。

如何得到正确的结果?

特别感谢至少基本的解释,而不仅仅是工作解决方案。

最佳答案

您有两种选择,因为 PCER 拥有我们在这里需要的一切。首先使用积极的前瞻:

\w+(?=[^{}]*})

参见 live demo here

这是一个方便的解决方法。但是,这完全取决于您的输入字符串。它说匹配单词字符后跟(不一定立即)一个右大括号 而不匹配一个大括号 [{}] 到达它。

另一个选项是\G\G 元字符用于应从特定点开始的那些类型的匹配。 \G 表示从上一个匹配结束的地方或从字符串的开头继续匹配(如 \A):

(?:actionname {|\G(?!\A))(\w+)[, ]*

这个正则表达式的起点是它看到 actionname 的地方。它不会选择交替的另一侧,因为我们使用否定先行 (?!\A) 禁用了 \G 匹配字符串的开头。匹配 actionname 后,它会 try catch 单词字符并匹配后面可选的逗号和空格。如果 g 被启用,它会从上一个匹配结束的地方恢复匹配。所以它捕获了所有这些词。

参见 live demo here

关于javascript - 在一组中匹配量化单词字符多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com