[英]php preg_match - pattern for number at end of string, always preceded by space, in turn preceded by any characters?
我正在嘗試從字符串中提取一個數字。 該字符串是一個文件名,其內容將是可變的,但將以一個空格后跟一個數字結尾。
所以像ab 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
。
想法?
你可以試試這個方法:
preg_match("/^\S.* (\b\d+)$/", $str, $matches);
echo end($matches)."\n";
例如,如果您使用以下變量:
$str = "1234 lkjsdhf ldjfh 1223";
對end($matches)
的調用將返回1223
而如果您使用以下變量:
$str = " 1212";
調用end($matches)
將保持為空。
您可以使用此正則表達式:
^\S.*\b(\d+)$
正則表達式詳情:
^
: 開始\\S
: 匹配一個非空格.*
: 匹配 0 個或多個任意字符\\b
: 字邊界(\\d+)
: 匹配捕獲組 #1 中的任何整數$
: 結束
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.