【发布时间】:2014-04-14 14:28:58
【问题描述】:
我有一个如下的字符串 2 - 5 现在我想用 Regex C# 获得数字 5(我是 Regex 的新手),你能给我一个想法吗?谢谢
【问题讨论】:
-
为什么不使用 string.Split('-') 然后从数组中获取第二个元素?
-
为什么需要正则表达式?
我有一个如下的字符串 2 - 5 现在我想用 Regex C# 获得数字 5(我是 Regex 的新手),你能给我一个想法吗?谢谢
【问题讨论】:
你可以简单地使用String.Split方法:
int number = int.Parse("2 - 5".Split('-', ' ').Last());
如果最后一个数字后没有空格,这将起作用。如果是这种情况,那么:
int number = int.Parse("2 - 5 ".Split('-', ' ')
.Last(x => x.Any() && x.All(char.IsDigit)));
【讨论】:
很简单如下:
'\s-\s(\d)'
并提取第一个匹配组
【讨论】:
@SShashank 有权,但我想我会提供一些代码,因为你提到你是 Regex 的新手:
string s = "something 2-5 another";
Regex rx = new Regex(@"-(\d)");
if (rx.IsMatch(s))
{
Match m = rx.Match(s);
System.Console.WriteLine("First match: " + m.Groups[1].Value);
}
Groups[0] 是整个匹配,Groups[1] 是第一个匹配的组(括号中的东西)。
【讨论】:
http://www\.the\-world\-(?<host>.+)\.com 将匹配您在 .NET Regex 对象中的示例并返回“is-awesome”。
如果你真的想使用正则表达式,你可以这样做:
string text = "2 - 5";
string found = Regex.Match(text, @"\d+", RegexOptions.RightToLeft).Value;
【讨论】: