如何使用正则表达式将文本与冒号匹配?

How can I match a text with colon using regex?

我想使用正则表达式来匹配名称前面或后面只有 1 个冒号的任何大小写,而不是两个冒号之间的名称。

匹配这样的东西:

name: | :name | name:`asdf`

但不应匹配以下任何一项:

:name: 
eman: 
nnamee: 
:nameasdfj

我有一个正则表达式,我认为它涵盖了前三个的所有情况,但它也匹配我不想要的 :name::

((?:^|\W)name:(?:$|\W))|((?:^|\W):name(?:$|\W))

尝试(?<!\S)name:|:name(?!\S)

demo

或轻微边界使用(?<![a-z:])name:|:name(?![a-z:])

demo2


使用第二个正则表达式的代码示例

>>> import re
>>> regex = r'(?<![a-z:])name:|:name(?![a-z:])'
>>> content = 'asdf- name:'
>>> re.search(regex, content).group(0)
'name:'