Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包含在双方括号中的任何对象的正则表达式_Php_Regex_String - Fatal编程技术网

Php 包含在双方括号中的任何对象的正则表达式

Php 包含在双方括号中的任何对象的正则表达式,php,regex,string,Php,Regex,String,我一直在尝试提取一些字符串或任何类型的值,这些值都包含在双方括号中。i、 e.[[hello world]]或[[12_u九]]等。这意味着除了用两个方括号括起来以外的任何东西。请检查这个,我试过的地方。然而,我在下面解释我所做的: /\[[^\]]*\]]/ 此模式可以验证[[]]中的任何内容。我的问题是,它还验证了[]。我举两个例子来验证这部分内容[[Welcome]][v2.0]]。我需要第二个例子不应该被验证。请参阅,您可以更好地理解。您需要: /\[\[[^\]]*\]\]/ 以下

我一直在尝试提取一些字符串或任何类型的值,这些值都包含在双方括号中。i、 e.
[[hello world]]
[[12_u九]]
等。这意味着除了用两个方括号括起来以外的任何东西。请检查这个,我试过的地方。然而,我在下面解释我所做的:

/\[[^\]]*\]]/
此模式可以验证
[[]]
中的任何内容。我的问题是,它还验证了
[]
。我举两个例子来验证这部分内容
[[Welcome]]
[v2.0]]
。我需要第二个例子不应该被验证。请参阅,您可以更好地理解。

您需要:

/\[\[[^\]]*\]\]/
以下是它的定义:

  • 前两个(转义)括号:
    \[\[
  • 然后是非括号的内容:
    [^\]]*
  • 然后是两个结束括号:
    \]\]
    (你也可以让它们不被替换,这是风格的问题)

注意,它与中间有方括号的字符串不匹配(例如<代码> [A[B] C])/代码>。如果要允许这些字符串,请使用

/\[\[.*?\]\]/
如果这必须是整个字符串,就像您在下面的评论中看到的那样,请使用

/^\[\[.*?\]\]$/      (if you want to allow brackets inside)
/^\[\[[^\]]*\]\]$/   (if you don't)
^
一个
$
是字符串末尾的锚,可以让你测试整个字符串。

试试这个正则表达式

\[{2}[^\[\]]+\]{2}
试试这个

解释

  • \[{2}
    我要的正是
    [[

  • \[{2}
    我想要的正是
    ]

  • [^\[\]+
    我想要任何不是
    [
    ]
    重复一次或多次的东西

  • 如果你只想抓住两个括号

    (?<=[^\[]\[{2})[^\[\]]+(?=\]{2}(?!\]))
    

    (?OP“为什么需要这个”?你更改了什么?为什么更改了它?OP的代码有什么问题?这对我来说不匹配。例如,
    aa[[bb]]cc-dd中没有匹配项
    @marekful在你的控制台中键入这个:
    /\[\[^\]*\]\]/.测试([[aa[[bb]]cc-dd]))
    标记是PHP而不是JavaScript。@StreetCoder你是什么意思?确切的要求是什么?你必须准确地写下约束条件。如果你不想在前面加括号,你可以在前面加上
    (^ |[^\]])
    。例如,你需要使用
    \[
    ]
    来转义
    \]@ OHuuth:关闭方括号不是一个特殊字符,除了字符类不在第一个位置之外,或者在<代码> ^ 之后立即就不需要被转义,是否允许中间括号中的方括号?