【发布时间】:2020-03-03 15:10:37
【问题描述】:
从下面的数据中,我需要从 RegEx 中提取值金额,如下面的粗体所示。我正在使用https://regex101.com/ 来测试表达式的值,但不能完全正确,RegEx 可以实现这一点吗?我正在尝试提取 % 符号后的值。
%\d?.*
以上匹配 % 之后的所有内容,但我只是在寻找值。
测试 1 46.6500% $4,463.82
测试 2 36.5000% 25,215.72
【问题讨论】:
-
这对你有用吗?
[^%]*$ -
尝试
%\D*(\d(?:[.,\d]*\d)?)$,参见regex101.com/r/fRM7Gw/1,获取第1组值。请注意,您不需要任何环顾四周,除非您解释此要求背后的原因。 -
@William Humphries 那么也许是这个?
[^% ]*$这假设您总是在 % 之后有一个空格,并且在要提取的字符串中没有任何空格。 -
什么是正则表达式?正如regex tag info 所述,所有带有此标签的问题还应包含一个标签,指定适用的编程语言或工具。
-
因此,在 C# 中,您可以使用
Regex.Match(str, @"%\D*(\d(?:[.,\d]*\d)?)$")?.Groups[1].Value或Regex.Match(str, @"(?<=%\D*)\d(?:[.,\d]*\d)?$")?.Value
标签: .net regex regex-lookarounds