簡體   English   中英

php preg_match - 字符串末尾的數字模式,總是以空格開頭,又以任何字符開頭?

[英]php preg_match - pattern for number at end of string, always preceded by space, in turn preceded by any characters?

我正在嘗試從字符串中提取一個數字。 該字符串是一個文件名,其內容將是可變的,但將以一個空格后跟一個數字結尾。

所以像ab 1212a 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.

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