正则表达式:4.55 $,5 $,$ 45,$ 7.86

时间:2012-05-24 09:19:51

标签: c# regex

在字符串中查找4.55 $,5 $,$ 45,$ 7.86的正则表达式是什么?

我使用@"(?<=\$)\d+(\.\d+)?",但它只找到$45$7.86

4 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分: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对此进行了测试。

答案 2 :(得分:-1)

我会在字符串

中使用类似下面的表达式'Globaly'
string expression = @"(\$\d(\.\d*)?|\d(\.\d*)?\$)";

答案 3 :(得分:-4)

  

正则表达式会对字符串中的4.55 $,5 $,$ 45,$ 7.86进行罚款吗?

要查找4.55$, 5$, $45, $7.86,您可以使用4.55\$, 5\$, \$45, \$7.86

编辑有些评论员担心人们会在不理解的情况下使用它。我提供了一个例子,以便可以理解。

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!