gpt4 book ai didi

javascript - 如何在某个字符之前和之后应用正则表达式

转载 作者:行者123 更新时间:2023-12-01 01:44:53 24 4
gpt4 key购买 nike

我想将正则表达式代码应用于字符串中特定字符之前和/或之后的部分,并且该字符必须位于括号之外。

更具体地说,我正在编写一个显示逻辑计算的网站(在 React.JS 中),我想删除主逻辑运算符之前和之后的第一个和最后一个括号。例如,在字符串中:

"((p∧r)∧(q∧r))∧(p∧q)"

我只想得到:"(p∧r)∧(q∧r)""p∧q" .

这意味着我想获取唯一的 "∧" 之前和之后的所有字符在任何括号之外,我想删除两个字符串的第一个左括号和最后一个右括号。 (例如,结果可能是一个包含前后部分的数组。)我已经能够使用以下代码删除第一个括号:

str.replace(/(\()(.*)(\))/, "$2");

但是该代码现在已应用于整个字符串。

那么我如何将此代码应用于唯一的 "∧" 之前和之后的两个部分括号外?如果可能的话,我更喜欢仅在正则表达式中使用代码,但 JavaScript 部分也可以。提前致谢。

最佳答案

您将无法在纯正则表达式中执行此操作,这类似于尝试使用正则表达式解析 HTML。简而言之,这是不可能的(并且已经在 in all possible way 上多次回答过)

所以你需要 JavaScript。要在 javascript 中执行此操作并不简单,因为您需要解析整个字符串以查找“^-who-are-not-in-parenthese”。

我会首先检查是否有一些用于数学运算的解析器或其他已经存在并且可以适应您的需要的解析器。

如果您没有找到某些东西,您将需要自己创建。

您可以使用循环逐个字符传递、具有括号缩进级别的计数器以及树状数据结构作为输出来实现。

您还可以使用正则表达式来查找最后一级缩进并创建自下而上的解析器。你找到所有最里面的括号组,保存它们,并用特殊的标识符字符替换它们。然后,您可以重做操作以找到现在最里面的括号组,检查其中是否有特殊字符并将它们放入树中(作为该字符标识的元素的父元素。)

一旦你有了树结构(以某种方式),根元素和第一层元素就应该是你想要的。

关于javascript - 如何在某个字符之前和之后应用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044832/

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