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时才匹配-使用分隔符时,可能应该避免使用分隔符*?
只建议引擎不贪婪。这没关系,但我想不出在什么情况下它会有所帮助。只是观察而已真的吗?即使在文本不平衡的情况下?我想这应该是根据意图而定的。