【发布时间】:2021-09-13 23:49:12
【问题描述】:
我有一个正则表达式:
Regex.Match(result, @"\bTop Rate\b.*?\s*\s*([\d,\.]+)", RegexOptions.IgnoreCase);
然后解析成int
topRate = int.Parse(topRateMatch.Groups[1].Value, System.Globalization.NumberStyles.AllowThousands);
示例)
Top Rate: 888,888
Output: 888888
通过使用我当前的正则表达式,我得到了 int 输出。 但是,我注意到当数字之间有空格时 例如,
Top Rate: 8 88,888
我只得到 8 分。有没有办法忽略数字之间/最高评分字母之后可能存在或不存在的任何空格?
示例)
Top Rate: 8 88,888
Expected output: 888888
Top Rate: 8 88,888
Expected output: 888888
Top Rate: 8 88,888
Expected output: 888888
Top Rate: 8 8 8,888
Expected output: 888888
Top Rate: 888, 8 88
Expected output: 888888
【问题讨论】:
-
中间块(带有
->)是什么意思?输入的规则是什么?给我们一些应该和不应该匹配的例子(以及为什么) -
我会使用一种天真的解决方案,首先删除所有空格,然后再应用正则表达式来保持理智。
-
@Flydog57 这没什么意思。我只是想解释 888,888 ->(等于)888888
-
@MarkSouls 嗯嗯好的。如果可能的话,我试图添加 \s* 以使其工作。
-
@davis 如果你知道空格的位置就可以了,否则我怀疑它会变得相当复杂。