2

以下を使用して、数値以外および小数以外の値をすべて削除しています。

Regex.Replace("A1B2C3.D4E5F6.G7H8I9", @"[^-?\d+\.]", "");

出力: 123.456.789

問題は小数の繰り返しです。最初の小数点以外をすべて削除する必要があります。

したがって、出力は次のようになります: 123.456789

パターンは見つかりました"\.(?=.*\.)"が、出力は 123456.789 です。最初の小数点ではなく最後の小数点です。

これら 2 つのパターンを組み合わせて、最初の小数点以下の繰り返し小数も削除できる人はいますか? タイ

4

2 に答える 2

3

正規表現の比較を行ってから、文字列を小数点以下の桁数で分割できます

        string newval = Regex.Replace("A1B2C3.D4E5F6.G7H8I9", @"[^-?\d+\.]", "");
        string[] tempsplit = newval.Split('.');

次に、「。」を付けてそれらを結合します。tempsplit[0]とtempsplit[1]の間にあり、その後に配列内の残りの文字列が続きます。

于 2012-06-18T05:41:43.573 に答える
2

.以下を置き換えることにより、最初のものを除くすべてを置き換えることができます。

(?<=\.[^.]*)\.

正規表現に簡単に統合できます:

[^-?\d+\.]|(?<=\.[^.]*)\.

これは、前に別のドットがある場合にのみドットに一致します。この正規表現は、可変幅の後読みを使用するため、他のほとんどの正規表現エンジンでは機能しないことに注意してください。

于 2012-06-18T05:37:03.123 に答える