簡體   English   中英

正則表達式可在首次出現令牌“ []”內查找文本

[英]regex to find text inside first occurrence of tokens “[]”

我正在通過file_get_contents($text_file)抓取一個文件,該文件在表單的內容開頭有一個標記...

[widget_my_widget]

文件的完整內容可能是...

[widget_my_widget]
Here is the start of the text file. It may have [] brackets inside it,
but only the first occurrence denotes the token.

我正在尋找正則表達式來獲取第一次出現在方括號[]中的文本字符串。 在這種情況下,我想返回widget_my_widget並將其加載到我的變量中。

在此先感謝您的幫助。

\\[(.+?)\\]第一個捕獲的組將匹配方括號內的字符串。

在PHP中,您可以像這樣使用它:

if (preg_match('/\[(.+?)\]/', file_get_contents($text_file), $group)) {
    print $group[1];
}

第一次出現在此字符串(文件內容)中時,請忽略左方括號,然后盡可能少地匹配,但最多匹配(不包括)右方括號。

我認為Staffan的答案大部分是正確的,但是我有一個較小的更正,我認為您可能想避免使用^,否則字符串必須以方括號開頭,而您說的是只想使用第一個實例。 轉到代碼...

$str = ...

$pattern = '/\[([^\]+])\]/';
$n = preg_match($pattern, $str, $matches);
if ($n > 0) {
    $first_match = $matches[1];
    /// do stuff
}

我的模式看起來有些混亂,因為方括號具有特殊含義,所以我將嘗試解釋一下...我們正在尋找一個開放的方括號,然后是一個或多個不是封閉方括號的字符(在此情況下,是尖號表示“不是”),然后是右括號。 括號位於我們要捕獲的內容周圍,內括號是字符類。 如果那沒有任何意義,請忽略我剛才所說的一切。

暫無
暫無

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

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