如何在javascript中以固定间隔获取两个不同字符中的字符串内容?

问题描述 投票:0回答:1

假设我们有一个名为str的字符串,它定义为:

const str = `
  ( Find this & ( this ) )
`

您可能不清楚,所以让我清除一下。我们的目标是找到之间的数据并发出警报(我个人喜欢使用replace(),因为我对match() matchAll()。因此,请原谅。)。所以,这是我的正则表达式解决方案:

const find = (str) => {
  str.replace(/\(([\S\s]*?)\)/gm, (_, a) => {
    alert(a)
  }
}

所以,现在我去做:

find(str)
// => Find this & ( this

/* Expected Result */

//  1) => this
//  2) => Find this & ( this )

所以,您可能已经理解我经常重复使用不连续的字符时遇到问题。我的正则表达式会捕获第一个以及第一个,并提醒它们之间的内容。但是我想要的东西定义如下:

在第一个

之间保持以及的递归之间找到它,后者位于最后一个之间]

与在[[(

之间有多少无关紧要,它应该保持流向直到最后一个。就像是成对维护。例如,更详细

const str = ` Find ( I feel ( lucky ( enough ) ) ) ` find(str) // 1) => I feel ( lucky ( enough ) ) // 2) => lucky ( enough ) // 3) => enough

但是实际上我需要的是相反的顺序,即输出将是:

// 1) => enough // 2) => lucky ( enough ) // 3) => I feel ( lucky ( enough ) )

所以,您能帮我解决这个问题吗?能做到吗?如果可以,您可以向我解释一下吗?

假设我们有一个名为str的字符串,它的定义为:const str =`(找到this&(this))`可能您不清楚,所以让我清除它。我们的目的是在(&...

javascript
1个回答
0
投票
我认为使用简单的正则表达式是不可能的。它们要么是贪婪的(尝试用表达式查找可能的最长字符串),要么是非贪婪的(尝试用表达式查找可能的最短字符串)。一种更合适的方法是递归并设置如下函数:
© www.soinside.com 2019 - 2024. All rights reserved.