我有一个带有某些表达式的纯文本文件(.txt
),我想用...代替无效的表达式……让我们说零。
无效的表达式是包含1+3^4^5
或10+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,}.*
在您的替换表达式中。进行替换时,两侧的
.*
会吞没双倍力量周围的整个弦。