gpt4 book ai didi

javascript - 在正则表达式最大值之后拆分而不丢失定界符

转载 作者:行者123 更新时间:2023-11-29 18:44:40 26 4
gpt4 key购买 nike

我想像这样转换一个字符串: hello!world.what?up进入["hello!", "world.", "what?", "up"]

.split(/[?=<\.\?\!>]+/)接近我所追求的,返回:

["hello", "world", "what", "up"]

.split(/(?=[\?\!\.])/)更近一点,它返回:

["hello", "!world", ".what", "?up"]

这样可以解决问题,但它并不漂亮:

.split(/(?=[\?\!\.])/).map((s, idx, arr) => { (idx > 0) s = s.slice(1); return idx < arr.length - 1 ? s + arr[idx+1][0] : s }).filter(s => s)

我将如何重新表述以实现所需的输出?

编辑:更新问题。

最佳答案

不确定真正的要求,但要完成您想要的,您可以使用 .match 而不是 .split

const items =
'hello!world.what?'.match(/\w+\W/g);

console.log(items);

enter image description here


评论后更新

您可以为任何要用作每个部分的终止符的字符添加一个组。

const items =
'hello!world.what?'.match(/\w+[!.?]/g);

console.log(items);

enter image description here


额外更新

以前的解决方案只会选择 !.? 之前的字母数字字符如果您想匹配除定界符以外的任何字符,请使用

const items =
'hello!world.what?up'.match(/[^!.?]+([!.?]|$)/g);

console.log(items);

enter image description here

关于javascript - 在正则表达式最大值之后拆分而不丢失定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54737677/

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