Regex从Python中的字段中提取特定值

2024-09-30 01:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在jira中有以下类型的组件。我正在尝试创建regex来从这些组件获取值。该值可以是任何值,例如1.1、1.a或a.a,或者对于任何组件都不需要,但是请记住,我不需要像R或(U1)这样的值,只需要1.0、1.1、1.a、a.1、1.x

所以我只需要句点(.)前的第一个字符或数字和句点(.)后的第一个字符或数字,如果没有句点(.),则为空

                                            need

PCN 9.4U1 (Act)----------------------------1.4  
PCN 9.5 (Act)------------------------------1.5  
PCN 9.6 (Act)------------------------------1.6
R AA 7.5U5 (Arch)--------------------------2.5              
R AA 7.6U2 (Rel)--------------------------2.6               
R AA 37.7R (Arch)---------------------------2.7             
R TEST 1.x (Fut)-------------------------2.x
R testp U2---------------------------------------no value

我使用下面的正则表达式来获取值

Fixversionmat = re.findall(r"(\d+\.\d+)", jsonToPython['name'])

但只有当值类似于1.1,而在其他情况下它失败时,这才会给出结果。你知道吗


Tags: 类型组件jira数字need字符actregex
2条回答

\S+\.\S+将两个字母数字字符字符串用.分隔。你知道吗

Fixversionmatch = re.findall(r"\w+\.\w+", jsonToPython['name'])

您可以通过以下方式获得大多数示例:

(\d[^ \n]*| [a-zA-Z]+?\d[^ \n]*).*$

链接:https://regexr.com/3ncbs

它不捕捉仅由字母组成的版本号—它捕捉混合的版本号。你知道吗

t = """CTX     
CTX 4.0R (Released)     
CTX 4.1 (Released)
CTX 4.2 (Released)
CTX 4.2R2 (FRtRre)  
CTX 4.3 (Released)  
CTX 4.4 (Released)  
CTX 4.4R1 (Active)  
CTX 4.5 (Active)    
CTX 4.6 (Active)
R PX 3.5R3 (Archived)           
R PX 3.5R4 (Archived)               
R PX 3.5R5 (Archived)               
R PX 3.6R2 (Released)               
R PX 3.6R3 (Rnreleased)             
R PX 3.6R4 (Released)               
R PX 3.6R5 (Active)             
R PX 3.7R (Archived)                
R PX 3.7R1 (Released)           
R PX 3.7R2 (Active)             
R PX 3.8R (Released)            
R PX 3.8R1 (Released)               
R PX 3.8R2 (Released)           
R PX 3.8R3 (Released)               
R PX 3.8R4 (Active)
R LPTT GA   
R LPTT R1   
R LPTT R2
R Cianara 4.1R2 (Early Access)
R Cianara 4.x (FRtRre)
R NRnPA R2"""

import re

vers = re.findall(r'(\d[^ \n]*| [a-zA-Z]+?\d[^ \n]*).*$',t,re.MULTILINE)
print(vers)

输出:

['4.0R', '4.1', '4.2', '4.2R2', '4.3', '4.4', '4.4R1', '4.5', 
 '4.6', '3.5R3', '3.5R4', '3.5R5', '3.6R2', '3.6R3', '3.6R4', 
 '3.6R5', '3.7R', '3.7R1', '3.7R2', '3.8R', '3.8R1', '3.8R2', 
 '3.8R3', '3.8R4', ' R1', ' R2', '4.1R2', '4.x', ' R2']

它找不到“空”的。你知道吗

相关问题 更多 >

    热门问题