簡體   English   中英

PHP中的RegEx:找到第一個匹配的字符串

[英]RegEx in PHP: find the first matching string

我想在非常長的文本中找到第一個匹配的字符串。 我知道我可以使用preg_grep()並獲取返回數組的第一個元素。 但是,如果我只需要第一場比賽(或者我知道事先只有一場比賽)那么這樣做是沒有效率的。 有什么建議嗎?

preg_match()

preg_match()返回模式匹配的次數。 這將是0次(不匹配)或1次,因為preg_match()將在第一次匹配后停止搜索。 相反,preg_match_all()將一直持續到主題結束。 如果發生錯誤,preg_match()返回FALSE。

這是一個如何做到這一點的例子:

$string = 'A01B1/00asdqwe';
$pattern = '~^[A-Z][0-9][0-9][A-Z][0-9]+~';

if (preg_match($pattern, $string, $match) ) {
  echo "We have matched: $match[0]\n";
} else {
  echo "Not matched\n";
}

您可以嘗試print_r($match)來檢查數組結構並測試正則表達式。

關於正則表達式的旁注:

  • 正則表達式中的波浪號〜只是圍繞圖案所需的分隔符。
  • 插入符號^表示我們從字符串的開頭匹配(可選)
  • 加號表示我們可以有一個或多個跟隨的整數。 (這樣A01B1A01B12A01B123也將匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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