簡體   English   中英

C# 正則表達式

[英]C# Regular expression

我有純文本文件 ( .txt ),其中包含一些表達式,我想用...替換無效表達式 ...假設為零。

無效表達式是包含1+3^4^510+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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM