gpt4 book ai didi

javascript - 匹配多次

转载 作者:行者123 更新时间:2023-12-02 17:37:16 25 4
gpt4 key购买 nike

我有一个正则表达式。

(\w+(?==\w+)|(?!==\w+)\w+)(?!\{\{)(?!.*token)(?=.*}})

测试字符串:

some text {{token id=foo1 class=foo2 attr1=foo3 hi=we}} more text {{token abc=xyz}} final text

但是,这仅匹配 {{token abc=xyz}}而不是 {{token id=fool class=foo2 attr1=foo3 hi=we}}

我已经使用过g修饰符。

如何修改以匹配第一个?

最佳答案

这符合您想要做的事情
(如果您想在下游检查上跨行,请将 . 替换为 [\S\s])

第一个解决方案无法验证{{token 存在

 #  /(?:(\w+)=(\w+))(?=(?:(?!{{token[ ]|}}).)*}})/

(?: # Next key,val pair
( \w+ ) # (1)
=
( \w+ ) # (2)
)
(?= # Downstream, must be a }}
(?:
(?! {{ token [ ] | }} )
.
)*
}}
)

Perl 测试用例

$/ = undef;

$str = <DATA>;

while ( $str =~ /(?:(\w+)=(\w+))(?=(?:(?!{{token[ ]|}}).)*}})/g )
{
print "$1 = $2\n";
}

__DATA__
some text {{token id=foo1 class=foo2 attr1=foo3 hi=we}} more text {{token abc=xyz}} final text

输出>>

id = foo1
class = foo2
attr1 = foo3
hi = we
abc = xyz
<小时/>

此解决方案使用两个正则表达式。一个用于获取 {{token .. }},一个用于解析 key=value

 # Regex 1

{{ token \b
(?:
(?! {{ | }} )
.
)+
}}

# Regex 2

(?: # Next key,val pair
( \w+ ) # (1)
=
( \w+ ) # (2)
)

关于javascript - 匹配多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512544/

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