gpt4 book ai didi

javascript - 如果 `q` 内不是 `\q`,则正则表达式在 `<>` 上拆分

转载 作者:行者123 更新时间:2023-11-28 20:35:32 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式,它将分割 < 之间的任何内容。和>如果它不包含 q那不是\q 。这就是我的意思:

       split           nope             split
v v v
test1< test2 > test3 <tesqt4> test5 < tes\qt6>

我想在不使用前瞻或后瞻的情况下执行此操作。

这是我到目前为止所拥有的,但它仍然不起作用 ^<(?:[^\\][^q]*)*>

最佳答案

你已经很接近了;试试这个

<([^>q\\]*(\\[^>])?)*>

这还将识别类似 <test\\q> 的情况视为无效,并将拒绝格式错误的 <test\> 。如果您想接受后者,请更改 [^>]通配符 . .

它的工作原理是允许结束标记之前的任何内容,即无效的 q ,或转义 \ 。然后它检查下一位是否是有效的转义序列,然后“循环”,直到找到结束 >

更新:正如评论中指出的,这是一个更好的版本

<(\\[^>]|[^\\>q])*>

它在 Chrome 上的速度大约是原来的两倍 (http://jsperf.com/nested-regex-quantifiers-vs-or),而且也更容易理解,因为它是在每个字符级别上工作的。

关于javascript - 如果 `q` 内不是 `\q`,则正则表达式在 `<>` 上拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468065/

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