C# 正则表达式在空格后取第一个集合,并希望使用相同的正则表达式删除$

C# 正则表达式在空格后取第一个集合,并希望使用相同的正则表达式删除$,c#,regex,C#,Regex,我的输入字符串:- “$440765.12-108(e)\n3” 我想要的输出字符串为:- “440765.12” 我试过使用below-regex,它可以正常工作,但我无法使用相同的regex删除$,所以有人知道如何使用below-regex执行相同的任务吗 Regex rx = new Regex(@"^(.*? .*?) "); var match = rx.Match(" $440,765.12 12-108(e)\n3 "); var text = match.Groups[1].V

我的输入字符串:-

“$440765.12-108(e)\n3”

我想要的输出字符串为:-

“440765.12”

我试过使用below-regex,它可以正常工作,但我无法使用相同的regex删除$,所以有人知道如何使用below-regex执行相同的任务吗

Regex rx = new Regex(@"^(.*? .*?) ");
var match = rx.Match(" $440,765.12  12-108(e)\n3 ");
var text = match.Groups[1].Value;
使用上述正则表达式后的输出:- 440765.12美元

我知道我可以使用string.replace函数执行相同的任务,但我只想使用regex执行相同的任务。

您可以使用

var result = Regex.Match(s, @"\$(\d[\d,.]*)")?.Groups[1].Value;
见:

详细信息

  • \$
    -匹配
    $
    字符
  • (\d[\d,.]*)
    -在组1(
    $1
    )中捕获一个数字,然后捕获任何0个或更多数字、
    字符
如果您想要一个更“精确”的图案(以防匹配可能出现在一些不相关的点或逗号中),您可以使用

\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?)
看。这里,
\d{1,3}(?:,\d{3})*(?:\.\d+)
匹配1、2或3个数字,后跟0或更多重复的
和3个数字,后跟可选的
字符和1或更多数字序列

此外,如果存在除
$
以外的任何货币符号,请将
\$
替换为与任何货币符号匹配的货币符号:

\p{Sc}(\d{1,3}(?:,\d{3})*(?:\.\d+)?)

看看吧。

@KARAN很高兴是这样。为了防止匹配的上下文比您的示例中更混乱,我又添加了两个表达式。