regex - 正则表达式匹配模式之间的内容与相同模式Python环境中的条件
问题描述
需要匹配模式:[[ : ]]
,
我愿意:\[\[(?!\[\[).[:]+.*?\]\]
但是当模式有许多相同模式的环境时:[[:]] [[ [] ]] [[]] [[ : ]] [[ : ]]
匹配失败,返回:[[ : ]], [[ : ]]
或者,如果正则表达式是:\[\[.*?[:]+.*?\]\]
,则给出:
[[ [] ]] [[]] [[ : ]] instead of [[ : ]]
什么是真道?
解决方案
当你必须匹配[[ : ]]
类似字符串时,你应该[[
首先匹配,然后任何 0+ 字符不是:
并且不开始前导/结束序列,即[[
和]]
,然后你需要匹配一个:
字符,然后是任何 0+ 字符直到第一次(最左边)出现]]
.
您可以使用的模式是
\[\[(?:(?!\[\[|]])[^:])*:.*?]]
请参阅正则表达式演示。请记住使用re.DOTALL
orre.S
来.
匹配多行。
细节
\[\[
- 一个[[
子串(?:(?!\[\[|]])[^:])*
- 与 a以外的任何字符匹配的缓和的贪婪令牌:
(参见[^:]
否定字符类),0+ 次(参见*
),不开始 a[[
和]]
序列:
- 一个冒号.*?
- 任何 0+ 个字符,尽可能少]]
- 一个]]
子串。
推荐阅读
- android - 如何阻止我的网站周围的包装应用程序
- javascript - 将函数从 if else 转换为 switch 语句时出错
- c++ - 无论错误如何,都会调用 c++ 程序的 main 函数中的所有函数吗?
- reactjs - 是否可以在 2 个 React 子组件之间直接通信,而不是遍历它们的共同父组件
- graphql - Apollo 错误不包含有效载荷
- java - 二叉树辅助
- unity3d - Unity 2D 对撞机的行为不正常。我无法通过/在 2D 对撞机下方的一个方块上移动
- ruby-on-rails - Rails、Ancestry 和 Graphql:未处理的错误未定义方法 `children' for #
- javascript - 如何使用js(web)在firebase中存储和更新用户数据?
- kubernetes - 使用 kubectl 等待 pvc 被绑定