regex - 在多行中提取两个字符串之间的数字
问题描述
我有这样的文字
Programme LASER
BlahBlahBlahBlah 2.3.2
Version BlahBlahBlahBlahBlahBlah 1.0
=========
Programme JEDI BlahBlahBlahBlah
Xcc 1.2.0 BlahBlah
BlahBlahBlahBlah
==============
第一:我需要(\d+(?:\.\d+)+)+
在模式 LASER & ====== 之间提取模式(仅版本号)
我成功地获得了 LASER 和 === 序列之间的完全匹配,就像这样
(?<=LASER).*?(?=\==)
我需要返回 Group 1 =2.3.2
和 Group 21.0
SECOND :相同的正则表达式必须匹配模式 JEDI & ====== 返回组 1 =1.2.0
并且没有组 2
谢谢你的帮助 !
解决方案
如果不是总是Alpha
和Beta
我认为您需要将文本拆分为多个部分并在另一个表达式中获取它们的版本:
- 正则表达式获取您
LASER
的版本。
正则表达式: \bLASER((?:[^\d=]*[\d.,]+)*)\b
Programme LASER
Version Alpha 2.3.2.1
Version Beta 1.0
=========
Programme JEDI
Version Alpha 1.2.0
Version Beta 2.0
==============
至
Version Alpha 2.3.2.1
Version Beta 1.0
- 正则表达式获取
LASER
部件的版本。
正则表达式: (?i)\bVersion\s*(\w+)\s*([\d.,]+)\b
- group1:
(\w+)
是版本名称。 - group2:
([\d.,]+)
是版本号。
尝试替换('$1', '$2')
以获得如下结果:
('Alpha', '2.3.2')
('Beta', '1.0')
推荐阅读
- cuda - CUDA 11 中的链接时优化 - 它们是什么以及如何使用它们?
- javascript - TypeError: nock(...).persist(...).log 不是函数
- kotlin - 运行测试 kotlin 多平台时出错。用于 js 的 kotlinx-coroutines-test 错误:无法获取
- powershell - Windows 10中的Subl命令被识别但不打开崇高文本3
- reactjs - React useState 总是落后 1 步
- css - Next.js 应该使用什么图像大小?
- sql - 错误代码:1231。变量“sql_mode”不能设置为“ORACLE”的值
- ruby - 雪花查询不返回时区信息
- laravel - 将巨大的csv文件导入laravel中的数据库
- python - 状态创建请求后,Flask 不发送响应数据以响应本机