gpt4 book ai didi

java - 用不在括号内的逗号分隔,跳过括号内的任何内容

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

我知道这可能是关于正则表达式的另一个话题,但尽管我进行了搜索,但我无法得到明确的答案。所以这是我的问题 - 我有一个这样的字符串:

{1,2,{3,{4},5},{5,6}}

我正在删除最外面的括号(它们来自输入,我不需要它们),所以现在我有这个:

1,2,{3,{4},5},{5,6}

现在,我需要将这个字符串拆分为一个元素数组,将这些括号内的所有内容视为一个“无缝”元素:

Arr[0]    1
Arr[1] 2
Arr[2] {3,{4},5}
Arr[3] {5,6}

我已经尝试使用前瞻来做到这一点,但到目前为止,我失败了(惨败)。就正则表达式而言,处理这些事情的最巧妙方法是什么?

最佳答案

如果像这样的元素应该放在一起,则不能这样做:{{1},{2}}。原因是一个 因为这相当于解析平衡括号语言。这种语言是上下文无关的,不能使用正则表达式进行解析。处理此问题的最佳方法不是使用正则表达式,而是使用带有堆栈的 for 循环(堆栈提供解析上下文无关语言的能力)。在伪代码中我们可以这样做:

for char in input
if stack is empty and char is ','
add substring(last, current position) to output array
last = current index
if char is '{'
push '{' on stack
if char is '}'
pop from stack

此伪代码将根据需要构造数组,请注意最好遍历给定字符串中字符的索引,因为您需要这些来确定要添加到数组中的子字符串的边界。

关于java - 用不在括号内的逗号分隔,跳过括号内的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30991830/

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