如何使用正则表达式从字符串中提取子字符串?

时间:2010-04-02 18:42:23

标签: regex string

我们说我有一个字符串“ABCDEF34GHIJKL”。如何使用正则表达式从字符串中提取数字(在本例中为34)?

我对正则表达式知之甚少,虽然我很想学习所有有关它的知识,但时间限制迫使我只是想知道这个具体例子是如何工作的。

非常感谢任何信息!

由于

3 个答案:

答案 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以及一些使用后引用的好例子。