C# 正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:30:43

我有一个纯文本文件(.txt),它有一些表达式,我想用...假设为零。

无效表达式是包含1+3^4^510+3+4*5+2^5^6^7的表达式,即表达式不能包含number^number^number^...,它只能包含number^number

我知道最好的方法是使用正则表达式,但我不知道如何在正则表达式中编写它。

C# 正则表达式

将检测多个幂的正则表达式是

('d+'^){2,}

{2,}表示连续两次或两次以上)


刚刚运行了以下测试:

using System;
using System.Text.RegularExpressions;
namespace SampleNamespace
{
    public class SampleClass
    {
        public static void Main()
        {
            string line = "1+3^4^5  10+3+4*5+2^5^6^7";              
            System.Console.WriteLine(line);
            line = Regex.Replace(line, @"('d+'^){2,}", "0");
            System.Console.WriteLine(line);
        }
    }
}

输出为:

>RegexTest.exe
1+3^4^5  10+3+4*5+2^5^6^7
1+05  10+3+4*5+07

它无法替换尾随的 ''d,但它确实有效。您可以通过对正则表达式进行以下更正来获取尾随 ''d:

('d+'^){2,}'d+

如果你想抹去包含双重幂的整个表达式,只需使用

.*('d+'^){2,}.* 

在您的替换表达式中。更换时,两侧的.*将吞噬双电源周围的整个字符串。

下面是一个正则表达式:

Regex re = new Regex(@"('d+'^){2}");
...
if(re.IsMatch(myData)) {
    // It's not valid
}