首页 > 解决方案 > 正则表达式:匹配括号内的整数

问题描述

我正在尝试删除字符串的括号末端,例如version = 10.9.8[35]. 我正在尝试使用正则表达式将括号模式中的整数(因此所有 [35],包括括号)替换为空字符串,[\[+0-9*\]+]但这也与不被括号包围的数字匹配。我没有正确使用 + 量词吗?

标签: pythonregex

解决方案


您可以匹配数字的格式,然后匹配方括号之间的一位或多位数字。

在使用第一个捕获组的替换中r'\1'

\b([0-9]+(?:\.[0-9]+)+)\[[0-9]+\]
  • \b字边界
  • (捕获组 1
    • [0-9]+匹配 1+ 个数字
    • (?:\.[0-9]+)+匹配 a.和 1+ 数字并重复 1 次或多次
  • )关闭组
  • \[[0-9]+\]匹配方括号之间的 1+ 个数字

正则表达式演示

例如

import re

regex = r"\b([0-9]+(?:\.[0-9]+)+)\[[0-9]+\]"
test_str = "version = 10.9.8[35]"
result = re.sub(regex, r'\1', test_str)
print (result)

输出

version = 10.9.8

推荐阅读