gpt4 book ai didi

javascript正则表达式在char一次拆分匹配,而不是多个

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:52 24 4
gpt4 key购买 nike

有如下例子:

var s = '#hello \n##1234 \n #hello2';
var splits = s.split(/#[^##]/);

产生:["", "ello ↵#", "234 ↵ ", "ello2"]

但希望它产生:["hello ↵##1234 ↵ ", "hello2"]

如何匹配字符 (#) 的单次出现,但如果出现多次则不匹配,也不是多次出现的最后一次出现。

最佳答案

使用 split 时,您需要负向后视以防止匹配 # 之后出现在另一个 # 之后,但 JavaScript 不支持后视。

匹配 block 而不是用 .match(/(?:##+|[^#])+/g) 匹配 1 次或多次出现的 2+ ## 以外的任何字符:

var s = '#hello \n##1234 \n #hello2';
var splits = s.match(/(?:##+|[^#])+/g);
console.log(splits);

图案细节:

  • (?:##+|[^#])+ - 出现 1 次或多次 (+):
    • ##+ - 2 个或更多 # 符号,尽可能多
    • [^#] - # 以外的任何字符([^...]negated character class,匹配任何字符不在定义的集合/范围内的单个字符)。

注意:[^##][^#] 相同,您不能取反序列 带有否定的字符类,只有特定的字符或字符范围。

关于javascript正则表达式在char一次拆分匹配,而不是多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782797/

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