我们说我有一个字符串“ABCDEF34GHIJKL”。如何使用正则表达式从字符串中提取数字(在本例中为34)?
我对正则表达式知之甚少,虽然我很想学习所有有关它的知识,但时间限制迫使我只是想知道这个具体例子是如何工作的。
非常感谢任何信息!
由于
答案 0 :(得分:4)
这是一个特定于语言的问题,但您没有指定语言。根据您之前提出的问题,虽然我会假设您认为这是一个C#语言问题。
对于这种情况,只需为数字写一个正则表达式并将其应用于输入。
var match = Regex.Match(input, "\d+");
if ( match.Success ) {
var number = match.Value;
}
答案 1 :(得分:0)
取决于语言,但您希望与([0-9]+)
之类的表达式匹配。这将在字符串中找到(第一组)数字。如果您的regexp引擎希望在字符串的开头匹配,则需要添加.*?([0-9]+)
。
答案 2 :(得分:0)
我同意冷静([0-9]+)
是最需要担心的事情。但是,您可能需要注意,在许多语言中,您需要使用反向引用(通常为\\1
或\1
)来获取值。例如
"ABCDEF34GHIJKL".sub(/^.*?([0-9]+).*$/, "\\1")
然而,Ruby中更好的解决方案是以下内容,并且还会匹配字符串中的多个数字。
"ABCDEF34GHIJ1001KL".scan(/[0-9]+/) { |m|
puts m
}
# Outputs:
34
1001
大多数语言都有某种类似的方法。这里有一些各种语言的例子http://www.regular-expressions.info/tools.html以及一些使用后引用的好例子。