我正在通过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 并将其加载到我的变量中。
提前感谢您的帮助。
答案 0 :(得分:3)
\[(.+?)\]
中第一个捕获的组将匹配方括号内的字符串。
在PHP中你可以像这样使用它:
if (preg_match('/\[(.+?)\]/', file_get_contents($text_file), $group)) {
print $group[1];
}
首次出现此字符串(文件内容)时,忽略左方括号,然后尽可能少地匹配,但最多(不包括)右方括号。
答案 1 :(得分:1)
我认为斯塔凡的答案大多是正确的,但我有一个小的修正,我认为你可能想要避免^,或者字符串必须以括号开头,你说你只想要第一个实例。关于代码......
$str = ...
$pattern = '/\[([^\]+])\]/';
$n = preg_match($pattern, $str, $matches);
if ($n > 0) {
$first_match = $matches[1];
/// do stuff
}
我的模式看起来有些混乱,因为括号具有特殊含义,所以我会尝试解释它...我们正在寻找一个开括号,然后是一个或多个不是结束括号的字符(在此上下文中) ,插入符号表示“不”),然后是结束括号。括号围绕我们想要捕获的内容,内括号是字符类。如果这没有意义,那就忽略我刚才说的一切。