[英]Match number at the end of the string
鑒於以下字符串,我如何匹配它末尾的整個數字?
$string = "Conacu P PPL Europe/Bucharest 680979";
我不得不說字符串的長度不是恆定的。
我選擇的語言是 PHP。
謝謝。
你可以使用帶有preg_match
的正則表達式,如下所示:
$string = "Conacu P PPL Europe/Bucharest 680979";
$matches = array();
if (preg_match('#(\d+)$#', $string, $matches)) {
var_dump($matches[1]);
}
你會得到:
string '680979' (length=6)
以下是一些信息:
#
是分隔符 - 它們沒有任何意義:它們只表示正則表達式的開頭和結尾; 你可以使用你想要的任何角色(人們經常使用/
) ()
表示您想要捕獲它們之間的內容
preg_match
,作為第三個參數給出的數組將包含那些捕獲的數據 ()
匹配的每個數據 \\d
表示“一個數字” +
表示一次或多次 所以:
有關更多信息,您可以查看PCRE模式和Pattern Syntax
。
以下正則表達式應該可以解決問題:
/(\d+)$/
編輯:此答案檢查字符串中的最后一個字符是否為數字。 由於https://stackoverflow.com/q/12258656/1331430這個問題已經完全復制了,我將在這里發布我的答案。 對於OP要求的這個問題,請使用接受的答案。
這是我的非正則表達式解決方案,用於檢查字符串中的最后一個字符是否為數字:
if (ctype_digit(substr($string, -1))) {
//last character in string is a digit.
}
substr
傳遞start = -1
將返回字符串的最后一個字符,然后根據ctype_digit
檢查,如果字符是數字,則返回true
,否則返回false
。
參考文獻:
要在不使用正則表達式的情況下獲取字符串末尾的數字:
function getNumberAtEndOfString(string $string) : ?int
{
$result = sscanf(strrev($string), "%d%s");
if(isset($result[0])) return strrev($result[0]);
return null;
}
var_dump(getNumberAtEndOfString("Conacu P PPL Europe/Bucharest 680979")); //int(680979)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.