簡體   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