C# 正则表达式
本文关键字:正则表达式 | 更新日期: 2023-09-27 18:30:43
我有一个纯文本文件(.txt
),它有一些表达式,我想用...假设为零。
无效表达式是包含1+3^4^5
或10+3+4*5+2^5^6^7
的表达式,即表达式不能包含number^number^number^...
,它只能包含number^number
。
我知道最好的方法是使用正则表达式,但我不知道如何在正则表达式中编写它。
将检测多个幂的正则表达式是
('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
}