当前位置: 首页 > 面试题库 >

在PHP中捕获方括号之间的文本

袁弘方
2023-03-14
问题内容

我需要某种方式来捕获方括号之间的文本。因此,例如,以下字符串:

[This] is a [test] string, [eat] my [shorts].

可用于创建以下数组:

Array ( 
     [0] => [This] 
     [1] => [test] 
     [2] => [eat] 
     [3] => [shorts] 
)

我有以下正则表达式,/\[.*?\]/但它仅捕获第一个实例,因此:

Array ( [0] => [This] )

如何获得所需的输出?请注意,方括号从不嵌套,因此不必担心。


问题答案:

匹配所有带括号的字符串:

$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);

如果要不带括号的字符串:

$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);

不带括号的替代版本,较慢的匹配版本(使用“ *”代替“ [^]”):

$text = '[This] is a [test] string, [eat] my [shorts].';
preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);


 类似资料:
  • 我需要一些方法来捕捉方括号中的文本。例如,以下字符串:

  • 在Javascript中,我希望得到一个字符串,表示两个括号之间的所有文本,即使该字符串包含更多的括号。 其工作如下: "(a)(b)(c)"。匹配(某物); [“a”、“b”、“c”] 或者 “a” “((a)(b)(c))”。匹配(某物); (a)(b)(c)

  • 问题内容: 我只是想知道如何在php中删除一组括号和括号本身之间的文本。 范例: ABC(测试1) 我想删除(Test1),只离开ABC 谢谢 问题答案: 是基于Perl的正则表达式替换例程。该脚本的作用是匹配所有出现的右括号,后跟任意数量的字符 而不是 右括号,然后再次跟右括号,然后删除它们: 正则表达式细目:

  • 我想在像这样的文本中插入()并将它们放入数组中,但里面可能有一些嵌套的括号。 文本: 应该这样处理: 我怎么能这么做?

  • 如果部分字符匹配,我会尝试捕捉花括号(包括花括号)之间的字符。 我尝试了下面的正则表达式模式,但它从整个字符串中的第一个花括号和最后一个花括号开始抓取所有内容。 我想捕获{list: a, b, and c},但是我得到的是{name_of_list}list包含{list: a, b, and c}。

  • 如何使用JavaScript中的正则表达式从下面句子中两个圆括号之间检索单词? “这是(我的)简单文本”