python - 如何从正则表达式结果中删除不必要的字符?

标签 python regex

我输入了软件和软件版本(仅是示例):

  • Oracle 1.1 数据库
  • Oracle 2.2
  • Oracle 3.3 平台
  • Oracle 数据库 4.4
  • 甲骨文50.50

我想要的输出是:

  • 甲骨文1.1
  • Oracle 2.2
  • Oracle 3.3
  • Oracle 4.4
  • 甲骨文50.50

我可以成功获得其中 5 个中的 4 个

re.compile('Oracle \d*.\d*')

问题是“Oracle DB 4.4”。如何让正则表达式忽略“DB”并仅返回“Oracle 4.4”,但仍然适用于其余输入?

最佳答案

您可以使用 2 个捕获组,其中 DB 是可选的

(Oracle )(?:DB )?(\d+(?:\.\d+))

Regex demo | Python demo

如果小数部分不可选:

(Oracle )(?:DB )?(\d+\.\d+)

在替换中使用 2 个捕获组。

result = re.sub(regex, r"\1 \2", test_str)

关于python - 如何从正则表达式结果中删除不必要的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63727934/

相关文章:

python - 是否可以检测重复的图像文件?

c - Regex C 代码不适用于我的 mac osx

javascript - 带或不带国家代码的手机号码的正则表达式

python - Django 测试用户对象

python - 如何制作一个到达某个点后无限发送消息的程序

jquery - 是否可以将对象从 jquery 发布到 bottle.py?

javascript - 用于替换中间字母的正则表达式

Javascript 运行时错误 :

javascript - 这个奇怪的 JavaScript 素数检查函数是如何工作的?

python - Python 中的简单感知器