繁体   English   中英

正则表达式在空格之后取第一组,并希望使用相同的正则表达式删除$

[英]Regex to take first set after Space and want to remove $ with same regex

我的输入字符串:

“ $ 440,765.12 12-108(e)\\ n3”

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

“440,765.12”

我已经尝试过使用下面的正则表达式,并且可以正常工作,但是我无法使用相同的正则表达式删除$,所以有人知道如何使用下面的正则表达式执行相同的任务吗?

Regex rx = new Regex(@"^(.*? .*?) ");
var match = rx.Match(" $440,765.12  12-108(e)\n3 ");
var text = match.Groups[1].Value;

使用上述正则表达式后的输出:-$ 440,765.12

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

您可以使用

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

参见regex演示

在此处输入图片说明

细节

  • \\$ -匹配$ char
  • (\\d[\\d,.]*) -将一个数字捕获到组1( $1 )中,然后将0个或多个数字,或捕获. 字符。

如果您想要更“精确”的模式(以防匹配项出现在一些不相关的点或逗号中),则可以使用

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

请参阅此正则表达式演示 在这里, \\d{1,3}(?:,\\d{3})*(?:\\.\\d+)? 匹配1、2或3位数字,后跟0或多个重复,和3位数字,后跟可选的a序列. 字符和1个或多个数字。

另外,如果除$之外可以有其他货币符号,则将\\$ $替换\\$与任何货币符号匹配的\\p{Sc} Unicode类别

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

参见另一个正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM