我有一些内容包含
形式的令牌字符串$string_text = '[widget_abc]This is some text. This is some text, etc...';
我想在第一个']'字符之后拉出所有文字
所以我在这个例子中寻找的返回值是:
This is some text. This is some text, etc...
答案 0 :(得分:17)
preg_match("/^.+?\](.+)$/is" , $string_text, $match);
echo trim($match[1]);
根据作者的要求 - 补充说明:
preg_match(param1,param2,param3)是一个允许您匹配正在寻找的正则表达式的单个案例场景的函数
param1 =“/^.+?](.+?)$/is”
“//”是你在param1
中正则表达式外面的内容最后的i代表不区分大小写(它不关心你的字母是'a'还是'A')
s - 允许你的脚本遍历多行
^ - 从字符串
的开头开始检查$ - 一路走到字符串
的末尾。 - 代表任何角色
。+ - 至少有一个或多个任何字符
。+? - 在你到达 p>之前,至少还有一个角色
。+?] - 至少有一个或多个任何字符,直到达到](之前有反斜杠),因为它代表正则表达式中的某些东西 - 查找它)
(。+)$ - 捕获]之后的所有内容并将其作为param3中定义的数组中的单独元素存储
param2 =您创建的字符串。
我试图简化解释,我可能会离开,但我认为我在大多数时候都是对的。
答案 1 :(得分:3)
正则表达式(?<=]).*
将解决此问题,如果您可以保证该行上没有其他方括号。在PHP中,代码将是:
if (preg_match('/(?<=\]).*/', $input, $group)) {
$match = $group[0];
}
这会将[widget_abc]This is some text. This is some text, etc...
转换为This is some text. This is some text, etc...
。它匹配]
之后的所有内容。
答案 2 :(得分:1)
$output = preg_replace('/^[^\]]*\]/', '', $string_text);
答案 3 :(得分:1)
为什么要在这里使用正则表达式有什么特别的原因吗?
echo substr(strstr($string_text, ']'), 1);
答案 4 :(得分:0)
对于这个实例,正则表达式肯定是过度的。
这是一个很好的单行:
list(, $result) = explode(']', $inputText, 2);
它完成了这项工作,并且比使用正则表达式便宜。