gpt4 book ai didi

c# - 如何使用正则表达式来捕获电源语句

转载 作者:行者123 更新时间:2023-11-30 17:04:18 25 4
gpt4 key购买 nike

我如何使用正则表达式来捕获一个 power 语句,这里有一些例子:

24

(2*5)x

y(y+1)

或更复杂的,例如 x4+(x*2)(x+1) 在这种情况下它有 2 个匹配项 ("x4 ”和“(x*2)(x+1)”)

我设法使用表达式使其在没有括号的情况下工作:

Regex rPower = new Regex(@"\w\^\w");

但是为了处理可能存在的括号,我一直在考虑类似的事情,但它仍然不起作用......

Regex rPower = new Regex(@"(?(?=\()(.*?(?=\)))|(\w))\^(?(?=\()(.*?(?=\)))|(\w))");

任何包含背后思考过程的帮助/解释都将不胜感激,因为我对正则表达式知之甚少,而且我现在才刚刚开始学习它。

提前致谢

编辑:为清楚起见,我打算做的是:

如果字符串中有一个可能以“(”开头的子字符串,在这种情况下,它应该从那个“(”开始读取所有内容,直到找到和“)”,否则假设它是一个“\w”,由一个分隔“^”依次遵循另一种模式,就像它开始的模式一样。

基本上它会匹配表达式“(random_Expression)(random_Expression)”,但它实际上可能不是一个复杂的表达式,如果它不包含任何括号我会认为它是一个简单的“\w”。

我希望我说清楚了:S

最佳答案

你可以使用这个:

(\([^)]*\)|\w)\^(\([^)]*\)|\w)

示例匹配:

2^2 matches 2^2
a+b^c matches b^c
(a+b)^(c+d) matches (a+b)^(c+d)
2^(a+b) matches 2^(a+b)
(a+b)^2 matches (a+b)^2
(a+b)^2+5^2-(3+2)^(2+3) matches (a+b)^2, 5^2, (3+2)^(2+3)

显然,如果使用嵌套操作之类的东西,您可能会发现表达式中的错误。如果您要处理复杂的表达式,我想您将不得不使用更详细的方法仔细解析它们。

Could you please edit or reply with an explanation even if brief of how the expression is working?

它类似于您的原始表达式 \w\^\w,但它会更改每个 \w(\([^)]*\)|\w)。如果仔细观察,它会匹配“括号内的内容”(由 \([^)]*\) 给出,它不适用于嵌套括号)或“一个简单的词”(\w).

希望对您有所帮助:)

关于c# - 如何使用正则表达式来捕获电源语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684973/

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