-1

4.55$, 5$, $45, $7.86 を文字列で精算する正規表現は?

使用しましたが、 ,@"(?<=\$)\d+(\.\d+)?"しか見つかりません。$45$7.86

4

4 に答える 4

2

これはうまくいくようです:

@"((?<=\$)\d+(\.\d+)?)|(\d+(\.\d+)?(?=\$))"

コードの例:

string source = "4.55$, 5$, $45, $7.86";
string reg = @"((?<=\$)\d+(\.\d+)?)|(\d+(\.\d+)?(?=\$))";
MatchCollection collection = Regex.Matches(source, reg);
foreach (Match match in collection)
{
    Console.WriteLine(match.ToString());
}
于 2012-05-24T11:13:13.363 に答える
0

これは少し不器用ですが、ここに別の式 (説明用のコードが少しあります) が役立つかもしれません。

string strRegex = @"\$(?<Amount>\d[.0-9]*)|(?<Amount>\d[.0-9]*)\$";
Regex myRegex = new Regex(strRegex);
string strTargetString = @"4.55$, 5$, $45, $7.86 ";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    if (myMatch.Success)
    {
        //Capture the amount
        var amount = myMatch.Groups["Amount"].Value;
    }
}

実際には、金額の最初または最後にある$を交互に一致させる方法を定義することです。

RegexHeroを使用してこれをテストしました。

于 2012-05-24T10:36:44.920 に答える
-1

文字列内で次の式「Globaly」のようなものを使用します

string expression = @"(\$\d(\.\d*)?|\d(\.\d*)?\$)";
于 2012-05-24T10:54:35.090 に答える
-4

4.55$, 5$, $45, $7.86 を文字列で精算する正規表現は?

を使用して見つける4.55$, 5$, $45, $7.86ことができます4.55\$, 5\$, \$45, \$7.86

EDIT一部のコメンテーターは、人々がこれを理解せずに使用することを心配しています. 理解が得られるように、例を挙げています。

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        string search = @"The quick brown fox jumped over 4.55$, 5$, $45, $7.86";
        string regex = @"4.55\$, 5\$, \$45, \$7.86";

        Console.WriteLine("Searched and the result was... {0}!", Regex.IsMatch(search, regex));
    }
}

出力はSearched and the result was... True!です。

于 2012-05-24T09:23:47.863 に答える