Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Regex 正则表达式匹配首次见面_Regex - Fatal编程技术网

Regex 正则表达式匹配首次见面

Regex 正则表达式匹配首次见面,regex,Regex,我有一根像 xxx [[a]] yyy [[b]] zzz 如何编写正则表达式以返回带有[[a]]和[[b]]] 类似正则表达式的\[\[.+\]\]只返回1个结果[[a]]yyy[[b]]量词在本质上是贪婪的。他们会尽可能多地消费。由于匹配任何字符,+将匹配尽可能多的字符,并且只在最后一个]之前停止 您应该使用不情愿的量词(+?),它将只匹配到第一次出现]: \[\[.+?\]\] 量词在本质上是贪婪的。他们会尽可能多地消费。由于匹配任何字符,+将匹配尽可能多的字符,并且只在最后一个]之前

我有一根像

xxx [[a]] yyy [[b]] zzz
如何编写正则表达式以返回带有
[[a]]
[[b]]]


类似正则表达式的
\[\[.+\]\]
只返回1个结果
[[a]]yyy[[b]]

量词在本质上是贪婪的。他们会尽可能多地消费。由于
匹配任何字符,
+
将匹配尽可能多的字符,并且只在最后一个
]
之前停止

您应该使用不情愿的量词(
+?
),它将只匹配到第一次出现
]

\[\[.+?\]\]

量词在本质上是贪婪的。他们会尽可能多地消费。由于
匹配任何字符,
+
将匹配尽可能多的字符,并且只在最后一个
]
之前停止

您应该使用不情愿的量词(
+?
),它将只匹配到第一次出现
]

\[\[.+?\]\]

使用非贪婪量词
+?

此外,我最好使用否定字符类

`\[\[[^\]]+\]\]`

如果在两个方括号之间,您确定没有结束方括号。如果你知道你能找到什么和你想匹配什么,就应该避免使用

使用非贪婪量词
+?

此外,我最好使用否定字符类

`\[\[[^\]]+\]\]`

如果在两个方括号之间,您确定没有结束方括号。如果你知道你能找到什么和你想匹配什么,就应该避免使用

为了安全起见,最好在括号体上更具体一些。
例如[[
[a-z]+
]]或[[
[^\[\]]+
]]

看起来您正在使用成对的双括号作为delimeters

一般来说,您不应该在任何更广泛的正则表达式上下文中使用[[
+?
]]形式。
因为即使它看起来不贪婪,引擎也会随时让它变得贪婪
取决于周围的表达式及其匹配的字符串

比如说,

  string = '  this is [[XX]] and here is [[ZZ]] end  '
  regex  = '\[\[.+?\]\]\s*end'

  match  = '[[XX]] and here is [[ZZ]] end'

我认为为了安全起见,最好在支架主体上更具体一些。
例如[[
[a-z]+
]]或[[
[^\[\]]+
]]

看起来您正在使用成对的双括号作为delimeters

一般来说,您不应该在任何更广泛的正则表达式上下文中使用[[
+?
]]形式。
因为即使它看起来不贪婪,引擎也会随时让它变得贪婪
取决于周围的表达式及其匹配的字符串

比如说,

  string = '  this is [[XX]] and here is [[ZZ]] end  '
  regex  = '\[\[.+?\]\]\s*end'

  match  = '[[XX]] and here is [[ZZ]] end'

否定类不需要..*?可以,因为只有后跟两个]@Bohemian时才匹配-使用分隔符时,可能应该避免使用分隔符
*?
只建议引擎不贪婪。这没关系,但我想不出在什么情况下它会有所帮助。只是观察而已真的吗?即使在文本不平衡的情况下?它应该是delimeters,取决于我的意图。否定类不需要…*?可以,因为只有后跟两个]@Bohemian时才匹配-使用分隔符时,可能应该避免使用分隔符
*?
只建议引擎不贪婪。这没关系,但我想不出在什么情况下它会有所帮助。只是观察而已真的吗?即使在文本不平衡的情况下?我想这应该是根据意图而定的。