如何使用正则表达式跳过字符串指定片段、匹配首尾边界提取目标内容
可正确提取目标内容的正则写法
原有正则的缺陷
之前使用的正则仅匹配了[~ + 24位小写字母数字UUID + :的前缀段,正向预查逻辑只做了后续长度校验,既没有捕获冒号后的目标内容,也没有匹配结尾的]闭合边界,无法完成内容提取。
可用正则及示例代码
直接使用以下正则即可完整匹配符合规则的字符串结构,同时提取目标内容:
import re st = "[~620cc13778d079432b9bc7b1:Hello WorldGuest]" # 匹配完整结构、提取目标内容的正则 pattern = r"\[\~[a-z0-9]{24}:([^\]]{0,64})\]" match_res = re.search(pattern, st) if match_res: target = match_res.group(1) print(target)
运行上述代码会输出预期结果:Hello WorldGuest
正则规则说明
\[\~:转义匹配固定开头字符[~[a-z0-9]{24}:精确匹配24位由小写字母、数字组成的UUID段::匹配UUID与目标内容之间的固定冒号分隔符([^\]]{0,64}):核心捕获组,匹配最多64个非]的字符(即待提取的目标内容),从规则上避免跨闭合标签误匹配\]:转义匹配固定结尾字符],强制校验字符串结构闭合
如果不需要严格规避内容中出现
]的异常场景,也可以将捕获组替换为(.{0,64}),对应正则为r"\[\~[a-z0-9]{24}:(.{0,64})\]",完全符合给出的示例场景提取要求。
内容的提问来源于stack exchange,提问作者Jiten
相关产品推荐
相关产品推荐

