3

いくつかの式を含むプレーン テキスト ファイル ( .txt) があり、無効な式を次のように置き換えたい... ...0 としましょう。

無効な式とは、1+3^4^5またはを含む式です10+3+4*5+2^5^6^7。つまり、式に を含めるnumber^number^number^...ことはできず、 のみを含めることができますnumber^number

これを行う最善の方法は正規表現を使用することだと理解していますが、これを正規表現で記述する方法がわかりません。

4

2 に答える 2

7

複数の累乗を検出する正規表現は

(\d+\^){2,}

{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,}.* 

あなたの置換式で。どちらかの.*側は、交換が行われると、ダブルパワーを囲むストリング全体を飲み込みます。

于 2012-04-10T18:36:40.487 に答える
2

そのための正規表現は次のとおりです。

Regex re = new Regex(@"(\d+\^){2}");

...

if(re.IsMatch(myData)) {
    // It's not valid
}
于 2012-04-10T18:36:58.487 に答える