繁体   English   中英

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

[英]How can I extract a substring from a string using regular expressions?

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

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

任何信息将不胜感激!

谢谢

这是一个特定于语言的问题,但您没有指定语言。 根据您之前提出的问题,虽然我会假设您认为这是一个C#语言问题。

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

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

取决于语言,但您想要与([0-9]+)这样的表达式匹配。 这将在字符串中找到(第一组)数字。 如果你的regexp引擎希望在字符串的开头匹配,你需要添加.*?([0-9]+)

我同意冷静([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以及一些使用后向引用的好例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM