Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复正则表达式以满足我的需要? 问题 给定字符串 所需输出 试过1次_Javascript_Regex - Fatal编程技术网

Javascript 如何修复正则表达式以满足我的需要? 问题 给定字符串 所需输出 试过1次

Javascript 如何修复正则表达式以满足我的需要? 问题 给定字符串 所需输出 试过1次,javascript,regex,Javascript,Regex,设string=foobarbazblimhkhkkthfgg console.logstring.split/\.\/m您可以从以下位置获取输出: [ "foo", "(bar)", "baz", "(blim)", "(hhh", "(kkk)", "thfgg)" ] 然后,对于每个项目,虽然的计数与的计数不同,但将列表中

设string=foobarbazblimhkhkkthfgg
console.logstring.split/\.\/m您可以从以下位置获取输出:

[
  "foo",
  "(bar)",
  "baz",
  "(blim)",
  "(hhh",
  "(kkk)",
  "thfgg)"
]
然后,对于每个项目,虽然的计数与的计数不同,但将列表中的下一个项目附加到该项目:

常量字符串=foobarbazblimhkhkkthfgg const output=string.split/\[a-z]{0,}\/g 对于let i=0;iconsole.logoutput 您可以从以下内容获取输出:

[
  "foo",
  "(bar)",
  "baz",
  "(blim)",
  "(hhh",
  "(kkk)",
  "thfgg)"
]
然后,对于每个项目,虽然的计数与的计数不同,但将列表中的下一个项目附加到该项目:

常量字符串=foobarbazblimhkhkkthfgg const output=string.split/\[a-z]{0,}\/g 对于let i=0;iconsole.logoutput 您可以在JavaScript中使用生成器函数,因为我不是JS程序员,所以代码可能看起来有点笨拙:

函数*parsersome_字符串{ 设stack=,pars=0; 对于let i=0;i0{ 产量堆栈; 堆栈=; } 堆栈+=某个_字符串[i]; PAR+=1; }如果某个_字符串[i]=={ 堆栈+=某个_字符串[i]; PAR-=1; 如果PAR==0&&stack.length>0{ 产量堆栈; 堆栈=; } }否则,如果i==some_string.length-1{ 如果stack.length>0{ 产量堆栈; 堆栈=; } }否则{ 堆栈+=某个_字符串[i]; } } } 设string=foobarbazblimhkhkkthfgg; const it=parserstring; 关于它的项目{ console.logitem;
} 您可以在JavaScript中使用生成器函数,因为我不是JS程序员,所以代码可能看起来有点笨拙:

函数*parsersome_字符串{ 设stack=,pars=0; 对于let i=0;i0{ 产量堆栈; 堆栈=; } 堆栈+=某个_字符串[i]; PAR+=1; }如果某个_字符串[i]=={ 堆栈+=某个_字符串[i]; PAR-=1; 如果PAR==0&&stack.length>0{ 产量堆栈; 堆栈=; } }否则,如果i==some_string.length-1{ 如果stack.length>0{ 产量堆栈; 堆栈=; } }否则{ 堆栈+=某个_字符串[i]; } } } 设string=foobarbazblimhkhkkthfgg; const it=parserstring; 关于它的项目{ console.logitem;
} 这种老式的方法很管用

设string=foobarbazblimhkhkkthfgaaaa; 函数*解析输入{ 设str=; 对于 设i=0,parens=0,c=input[0],length=input.length; i<长度; c=输入[++i] { 如果c=={ 如果parens++str+= else{如果str产生str;str=;} }如果c=={ 如果parens-==1{yield str+;str=} else str+= }else str+=c } 产量str; }
console.logArray.fromparsestring传统的方法工作得相当好

设string=foobarbazblimhkhkkthfgaaaa; 函数*解析输入{ 设str=; 对于 设i=0,parens=0,c=input[0],length=input.length; i<长度; c=输入[++i] { 如果c=={ 如果parens++str+= else{如果str产生str;str=;} }如果c=={ 如果parens-==1{yield str+;str=} else str+= }else str+=c } 产量str; }
console.logArray.fromparsestringOk但。。。问题是什么?如何解决这个问题?您正在寻找JavaScript不支持的递归模式。所以你需要自己计算函数中的开始括号和结束括号。你能解释一下怎么做吗。好的,但是。。。问题是什么?如何解决这个问题?您正在寻找JavaScript不支持的递归模式。所以你需要自己计算一个函数中的开始括号和结束括号。你能解释一下怎么做吗。Yaa似乎有用,但我会等一段时间看别人的回答
一个JS程序员,但我将使用生成器函数快速创建一个解析器,并在其上使用ofoutput@JuanMendes:嗯,当然,我从其他编程语言和语法分析中了解一般概念。但是谢谢:-是啊,它工作得很好,我花了一些时间来学习函数的逻辑,而不是你的ans。你介意把这个问题投赞成票吗!!哇,我不是一个JS程序员,但我将使用生成器函数快速创建一个解析器,并在其上使用ofoutput@JuanMendes:嗯,当然,我从其他编程语言和语法分析中了解一般概念。但是谢谢:-是啊,它工作得很好,我花了一些时间来学习函数的逻辑,而不是你的ans。你介意把这个问题投赞成票吗!!
[
  "foo",
  "(bar)",
  "baz",
  "(blim)",
  "(hhh",
  "(kkk)",
  "thfgg)"
]