如何使用正则表达式捕获幂语句

本文关键字:语句 何使用 正则表达式 | 更新日期: 2023-09-27 18:22:32

如何使用regex捕获幂语句,下面是一些示例:

24

(2*5)x

y(y+1)

或更复杂的,如x4+(x*2)

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

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

但为了处理括号的可能存在,我想了一些类似的东西,但它仍然不起作用。。。

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

任何包含其背后思想过程的帮助/解释都将不胜感激,因为我对regex了解不多,而且我现在才刚刚开始学习它

提前感谢

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

如果字符串中有一个子字符串可能以"("开头,在这种情况下,它应该从"("开始读取所有内容,直到找到和")",否则假设它是一个"''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)

显然,如果使用嵌套操作之类的东西,您可能会在表达式上发现错误。如果你要处理复杂的表达式,我想你必须用一种更详细的方法仔细地解析它们。

请你编辑或回复一个解释,即使是简短的这个表达式是如何工作的?

它与原始表达式'w'^'w相似,但它会将每个'w更改为('([^)]*')|'w)。如果仔细观察,它要么匹配"括号内的东西"(由'([^)]*')给出,不适用于嵌套括号),要么匹配"一个简单单词"('w)。

希望这能有所帮助:)