【发布时间】:2021-09-10 21:17:37
【问题描述】:
我有一个正则表达式:
var example= Regex.Match(result, @"\b(Today is:)[\s:]*(.*)", RegexOptions.IgnoreCase);
然后我转换
example= int.Parse(result.Groups[2].Value, System.Globalization.NumberStyles.AllowThousands);
这在大多数情况下都可以正常工作,但是,我注意到如果在 Today is 之后有额外的字符串:例如,
Today is (extra):
我上面的正则表达式在这种情况下失败了,因为它也抓取了“(额外)”然后进入 int.Parse,它失败了。我希望我的正则表达式在有“今天是:”时匹配,那么即使有更多的字符串也没关系,只需获取字符串并转换为int值即可。
例如, 今天是:100,000,000 -> 转换并得到 int 100000000
今天是 (abc123): 88,888 -> 转换并得到 int 88888
今天是(Extra Text blah blah):100,000 -> 转换并获得 int 100000
【问题讨论】:
-
您的正则表达式模式适用于您提供的 3 个示例?我没有看到它在线工作:regexr.com/60s92
-
你能非常准确(用英文而不是代码)你试图解析的字符串的格式吗?它必须遵守的预期规则是什么?
-
应该是\b(今天是:)[\s:]*(.*)
-
\: (\d.*)应该这样做;你想要:之后的数字,对吗?如果是这样,您可以获得第一组值。 -
字符串的格式总是以“Today is”开头(不区分大小写)。所以它总是@"\b(今天是:)[\s:]* 开始。