我正在嘗試從字串中提取一個數字。該字串是一個檔案名,其內容將是可變的,但將以一個空格后跟一個數字結尾。
所以像a b 1212, 之類的字串a 1212。我不確定檔案名是否以空格開頭,但類似的東西 1212不應該產生匹配。
到目前為止我正在使用
preg_match('#^(.)* (\d*)$#', $str, $matches);
但這會回傳匹配的情況,例如 1212.
我想過反轉字串并這樣做
preg_match('#^(\d*)(\s*)(.*)$#', strrev($str), $matches);
var_dump(strrev($matches[1]));
并檢查if $matches[1] != '',這似乎有效,但我試圖更好地理解正則運算式,以便我可以在沒有相反的情況下做到這一點,并為案例找出正確的模式get number at end of string, which is always preceded by a space, and where that space in turn is always preceded but anything。
想法?
uj5u.com熱心網友回復:
你可以試試這個方法:
preg_match("/^\S.* (\b\d )$/", $str, $matches);
echo end($matches)."\n";
例如,如果您使用以下變數:
$str = "1234 lkjsdhf ldjfh 1223";
呼叫end($matches)將回傳1223
而如果您使用以下變數:
$str = " 1212";
呼叫end($matches)將保持為空。
uj5u.com熱心網友回復:
您可以使用此正則運算式:
^\S.*\b\d $
正則運算式演示
正則運算式詳情:
^: 開始\S: 匹配一個非空格.*: 匹配 0 個或多個任意字符\b\d: 匹配任何整數$: 結尾
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355937.html
