示例字符串输入: “这是一个 :key: ,这是 :anotherKey: 但这:是普通文本。”
我似乎无法找出将返回上述字符串的以下匹配项的正则表达式模式:
This is a
:key:
and this is
:anotherkey:
but this: is normal text.
下面是我尝试过的表达式及其输出的描述
要解析出冒号包裹的字符串,同时保留单个冒号,您可以使用正则表达式来匹配用两个冒号 (:wrapped:) 包裹的字符串,但不匹配单个冒号。
正则表达式模式说明:
(?
:([^:]+):: 匹配冒号包裹的字符串。 ([^:]+) 捕获非冒号的任何字符序列,并包裹在两个冒号之间。
(?!:):负向前视以确保当前冒号后面没有另一个冒号(这可以避免匹配 ::wrapped::)。
正则表达式模式:
(?
说明:
(?
:([^:]+):: 匹配以单个冒号开头和结尾且包含除冒号之外的任何字符的字符串。
(?!:):确保匹配后的冒号后面不会跟着另一个冒号。
用法示例:
输入: “你好:name:,你好吗?::this:: 用两个冒号括起来,:single: this 用一个冒号括起来。”
输出(匹配):
:姓名:
:单个:
实践(Python 示例):
重新导入
text = “你好:name:,你好吗?::this:: 用两个冒号括起来,:single: this 用一个冒号括起来。” 匹配 = re.findall(r'(?
打印(匹配)
输出:
['姓名','单身']
这将仅匹配和提取冒号包裹的字符串,例如 :name: 和 :single:,但会跳过 ::this::。