[英]C# Regular expression
我有純文本文件 ( .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);
}
}
}
Output 是:
>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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.