gpt4 book ai didi

javascript - 根据特定值拆分字符串,但保留分隔符,但这样做时不要将它们附加到任何东西上

转载 作者:行者123 更新时间:2023-12-03 02:21:33 29 4
gpt4 key购买 nike

我到处都找过,但似乎没有解决方案可以解决这个问题。假设我得到了一个带有如下文本的字符串:

jx():{ww.}55<<;<5<>=-[]+*/"hrw  7 n t";fizz buzz

我想把这个字符串分割成一个数组,所以它看起来像这样(逗号表示不同的数组位置:

"jx","(",")",":","{","ww",".","}","55","<<",";","<","5","<",">","=","-","[","]","+","*","/","hrw  7 n t",";","fizz","buzz"

这是我的正则表达式,我使用 ?= 来保留分隔符或任何你想调用它们的内容,每当我这样做时,虽然它确实保留了分隔符,但如果另一个字符紧随其后,它不会在分隔符上分割它,或者只是有时,我查看了其他解决方案,并且我尝试过的所有解决方案都给了我相同的结果:

str=str.split(/(?=".*")|(?=[(){}\[\]<>:;.\=\-\*\+\/])|(?=\s{2,})|(?=[0-9]+)/)

如果我将上面的文本放入正则表达式中,我会得到:

["jx", "(", ")", ":", "{ww", ".", "}", "5", "5", "<", "<", ";", "<", "5", "<", ">", "=", "-", "[", "]", "+", "*", "/", "\"hrw", "  ", "7 n t\"", ";fizz buzz"]

正如您所看到的,“ww”与 } 位于相同的位置,并且最后您可以看到分号与 fizzuzz 位于相同的数组位置,但不会进入单独的位置。

规则如下。在任何空格上拆分,但保留引号之间的空格。按 {, }, (, ), %, <<, <,>,-,+,=,||,&&,!,?,:,;. 拆分,或按引号拆分,以便整个文本在引用将是一个数组位置。

编辑:我相信我发现了问题。正则表达式正在检测结束引号和开始引号之间以及引号中的单词。例子:“嘶嘶声”和“嗡嗡声”从技术上讲, and 位于两个报价之间,返回 "和 "的值我该如何解决这个问题?

感谢任何帮助。谢谢!

最佳答案

直接匹配您想要的事物通常比分割它们之间的事物容易得多。

var str = 'jx():{ww.}55<<;<5<>=-[]+*/"hrw  7 n t";fizz buzz';
var regex = /"[^"]*"|<<|&&|\|\||\(|\)|\{|\}|\[|\]|<|>|:|;|\.|=|-|\*|\+|\/|\w+/g;
console.log(str.match(regex));

如果您想避免将引号作为匹配的一部分,您可以使用环视执行一些复杂的操作,但对数组进行后处理并删除引号要容易得多(例如 .map(x => x.replace(/^"|"$/g, "")).map(x => x[0]=='"' ? x.slice(1,-1) :x))。

关于javascript - 根据特定值拆分字符串,但保留分隔符,但这样做时不要将它们附加到任何东西上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136006/

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