C#正则表达式

hyp*_*erN 3 c# regex

我有纯文本文件(.txt),它有一些表达式,我想用......替换无效的表达式...让我们说零.

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

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

Ala*_*ain 7

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

(\d+\^){2,}
Run Code Online (Sandbox Code Playgroud)

({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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

产出是:

>RegexTest.exe
1+3^4^5  10+3+4*5+2^5^6^7
1+05  10+3+4*5+07
Run Code Online (Sandbox Code Playgroud)

它无法替换尾随\但它确实有效.您可以使用以下更正来抓取尾随\ d到正则表达式:

(\d+\^){2,}\d+
Run Code Online (Sandbox Code Playgroud)

如果你想要消除包含双倍权力的整个表达式,请使用

.*(\d+\^){2,}.* 
Run Code Online (Sandbox Code Playgroud)

在你的替换表达中.在.*两边会吞噬周围的双电源时更换发生整个字符串.