C# Regular expression
c#, regex
Solution
The regular expression that will detect multiple powers is
(\d+\^){2,}
(`{2,}` means two or more times in a row)
Just ran the following Test:
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);
}
}
}
Output was:
>RegexTest.exe
1+3^4^5 10+3+4*5+2^5^6^7
1+05 10+3+4*5+07
It failed to replace the trailing \d but it does work. You can grab the trailing \d with the following correction to the regex:
(\d+\^){2,}\d+
If you want to wipe out the entire expression that contains a double power just use
.*(\d+\^){2,}.*
in your replace expresion. The `.*` on either side will swallow up the entire string surrounding the double power when a replacement takes place.
Problem
I have plain text file (`.txt`) which has some expressions and I want to replace invalid expression with... ...let's say zero. An invalid expression is expression which contains `1+3^4^5` or `10+3+4*5+2^5^6^7`, i.e. an expression can't contain `number^number^number^...`, it can only contain `number^number`. I understand that best way to do this is to use Regex but I dont know how to write this in regex.