簡體   English   中英

匹配字符串末尾的數字

[英]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.
}

DEMO

substr傳遞start = -1將返回字符串的最后一個字符,然后根據ctype_digit檢查,如果字符是數字,則返回true ,否則返回false

參考文獻:

  1. SUBSTR
  2. ctype_digit

要在不使用正則表達式的情況下獲取字符串末尾的數字:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM