我有一个带有某些表达式的纯文本文件(.txt),我想用...代替无效的表达式……让我们说零。

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

我了解做到这一点的最佳方法是使用Regex,但我不知道如何在regex中编写此代码。

最佳答案

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

(\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,}.*


在您的替换表达式中。进行替换时,两侧的.*会吞没双倍力量周围的整个弦。

10-07 19:09
查看更多