PHP正则表达式-以简短的一个为例

PHP正则表达式-以简短的一个为例,php,regex,Php,Regex,我有字符串:这是一个[[bla]],我想要一个[[burp]],我需要把2个字符串[[bla]]和[[burp]]放入一个数组。 我尝试使用的regexp是: $pattern=“/\[\[.+\]\]/” 问题是输出是:[[bla]]和[[burp]],因为我想它是第一个[[[/code>和最后一个] 如何修复模式?您需要在此处->*?仅获取[[]]之间的文本,而不是[[]][[]]之间的文本: $pattern = "/\[\[(.*?)\]\]/" 此外,您还需要一个只获取方括号之间的文

我有字符串:
这是一个[[bla]],我想要一个[[burp]]
,我需要把2个字符串
[[bla]]
[[burp]]
放入一个数组。 我尝试使用的regexp是:

$pattern=“/\[\[.+\]\]/”

问题是输出是:
[[bla]]和[[burp]]
,因为我想它是第一个
[[[/code>和最后一个
]
如何修复模式?

您需要在此处->
*?
仅获取
[[]]
之间的文本,而不是
[[]][[]]
之间的文本:

$pattern = "/\[\[(.*?)\]\]/"
此外,您还需要一个只获取方括号之间的文本,而不获取括号本身->
(.*)

例如:

$string = "This is a [[bla]] and i want a [[burp]]";
$pattern = "/\[\[(.*?)\]\]/";
preg_match_all($pattern , $string, $matches);
var_dump($matches[1]);
输出:

array(2) {
  [0]=>
  string(3) "bla"
  [1]=>
  string(4) "burp"
}
您需要在此处->
*?
仅获取
[[]]
之间的文本,而不获取
[[]][[]]
之间的文本:

$pattern = "/\[\[(.*?)\]\]/"
此外,您还需要一个只获取方括号之间的文本,而不获取括号本身->
(.*)

例如:

$string = "This is a [[bla]] and i want a [[burp]]";
$pattern = "/\[\[(.*?)\]\]/";
preg_match_all($pattern , $string, $matches);
var_dump($matches[1]);
输出:

array(2) {
  [0]=>
  string(3) "bla"
  [1]=>
  string(4) "burp"
}
来吧,在电视上看

或者使用否定词,请参见

来吧,在电视上看

或者使用否定词,请参见


展示一些额外的代码,比如你是如何尝试进行匹配的,以及你是如何构造你的输入数组的。你应该使用所谓的“非贪婪匹配”。根据使用正则表达式的位置/方式,将
+
替换为
+?
,添加
?-g
修饰符或将其作为选项传递。此外,您的问题与设计模式无关,最好删除该标记。请尝试。显示一些其他代码,如您如何尝试进行匹配等,以及您如何构建输入阵列。您应该使用所谓的“非贪婪匹配”。根据使用正则表达式的位置/方式,将
+
替换为
+?
,添加
?-g
修饰符或将其作为选项传递。另外,你的问题与设计模式无关,最好去掉这个标签。试试看。我今天学到了一些新东西。谢谢我接受了你的答案,因为它是完整的,首先要写:)不客气:)另外,另一个答案在使用子模式时丢失了,所以它不起作用;)我今天学到了一些新东西。谢谢我接受了你的答案,因为它是完整的,首先要写:)不客气:)另外,另一个答案在使用子模式时丢失了,所以它不起作用;)