2010-04-02 126 views
1

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

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

任何信息将不胜感激!

感谢

+0

您使用RexEx时使用哪种语言? – 2010-04-02 21:14:37

+0

我使用的是javascript – 2010-04-26 16:34:16

回答

0

取决于语言,但要搭配像([0-9]+)的表达式。这将在字符串中找到(第一组)数字。如果您的正则表达式引擎希望在字符串的起始处开始匹配,则需要添加.*?([0-9]+)

4

这是一个非常特定于语言的问题,但您没有指定一种语言。根据之前提出的问题,尽管我会假设你的意思是这是一个C#语言问题。

对于这种情况,只需编写一个数字的正则表达式并将其应用于输入。

var match = Regex.Match(input, "\d+"); 
if (match.Success) { 
    var number = match.Value; 
} 
0

我calmh ([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以及一些使用的反向引用的好例子。

相关问题