如何在字符 y 仍在 y 后面时查找字符 x 之前的最后一个文本 Javascript

How to find last text before character x while character y is still behind y Javascript

我试图为以下问题找到一个优雅的解决方案。我有以下字符串:

这 ) 是 ) 一些 $ 文本。 ) lkzejflez $ aaeea ) aeee

存在于粗体标记括号之前的人类可读文本部分和括号之后只是垃圾的部分。我需要在字符串中找到人类可读的文本,就像这个一样。我需要在最后一个括号(粗体标记)之前获取文本,它后面仍然有一个美元符号(粗体标记)。这是我对问题的解决方案:

const info = "This)is)$a sentence.)lkzejflez$aaeea)aeee";
let result;

for(let i = 0; i < info.length;i++){
  const char = info[i];
  const after = info.substring(i+1,info.length);
  const otherChance = after.indexOf(')') < after.lastIndexOf('$');
  if(otherChance){continue;};
  const isEndBracket = char ===')';
  const before = info.substring(0,i)
  if(isEndBracket){result = before;break;};
}
console.log(result)

预期结果是 'This)is)$a sentence.' 我的代码确实 return 这个结果,但是它使用了 substr 和一个可以使用正则表达式的 forloop。我现在不知道如何。有谁知道我的问题的更优雅的解决方案。提前致谢。

试试下面的正则表达式:^.*\)(?=.*$)

解释:匹配从行首到最后一个 ) 后跟 $ 的尽可能多的字符。

详细解释:贪婪地匹配零个或多个除换行符之外的任何字符,从行首到 ) 字符后跟零个或多个除换行符外的任何字符,然后是 $ 符号。