首页 > 解决方案 > 在多行中提取两个字符串之间的数字

问题描述

我有这样的文字

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

谢谢你的帮助 !

标签: regex

解决方案


如果不是总是AlphaBeta

我认为您需要将文本拆分为多个部分并在另一个表达式中获取它们的版本:

  1. 正则表达式获取您LASER的版本。

正则表达式: \bLASER((?:[^\d=]*[\d.,]+)*)\b

正则表达式演示1

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
  1. 正则表达式获取LASER部件的版本。

正则表达式: (?i)\bVersion\s*(\w+)\s*([\d.,]+)\b

regex-demo2

  • group1:(\w+)是版本名称。
  • group2:([\d.,]+)是版本号。

尝试替换('$1', '$2')以获得如下结果:

('Alpha', '2.3.2')
('Beta', '1.0')

推荐阅读