【发布时间】:2015-09-22 00:59:37
【问题描述】:
我在识别字符串中的多字符数字时遇到问题。
我正在尝试从右到左检查第一个数字以进行比较。
我原来的正则表达式:
Regex.Match(s, @"\d{3}", RegexOptions.RightToLeft);
这将匹配它在任何字符串中遇到的前 3 位数字。例如:
- hello123 - 输出:123
- good234bye - 输出:234
- see-you-456-tomorrow - 输出:456
不用担心。但是,现在我们不确定数字的长度,因此我们将正则表达式更改为:
Regex.Match(s, @"\d*", RegexOptions.RightToLeft);
这会查找第一个数字字符串,任何长度,并使用它。 然而,如果数字不在字符串的末尾,它会返回一个空匹配。例如:
- hello12 - 输出:12
- 再见-1234 - 输出:1234
- see-1-you-2-morrow - 输出:无
如何查找字符串中第一个 x 长度的数字,从右到左忽略任何非数字字符,而不返回空匹配项?
【问题讨论】:
-
你有没有试过像这样使用“全局”:Regex.Match(s, @"\d+g", RegexOptions.RightToLeft);
-
我没有。那检查什么? (说到正则表达式,我有点新手)
-
我不确定它在 C# 中的语法,但 g 代表全局搜索