Skip to main content
 首页 » 编程设计

python之正则表达式以及如何获取捕获的值

2025年05月04日274小虾米

custom = 'number=value1;user=value2;yr=value3' 
 
number=re.findall('number=(.+?);',custom) 
user=re.findall('user=(.+?);',custom) 
yr=re.findall('yr=(.+?)[;\w]',custom)) 
 
outcome: 
 
print number 
value1  

我正在尝试从 custom 中提取 numberuseryr 的值。除了'yr',它都在工作,因为'yr'是最后一个词,它不以';'结尾。我尝试添加\w,但没有用。有没有办法以';'结尾或字符串结束?我可以搜索 custom[-1],但我只想知道如何使用正则表达式,而 yr 并不总是最后; numberuser 有时可以放在最后。

请您参考如下方法:

您可以利用正则表达式回顾并使用如下正则表达式:

(?<==)(\w+) 

Working demo

因此,您可以对每种情况使用此正则表达式:

(?<=number=)(\w+) 
(?<=user=)(\w+) 
(?<=yr=)(\w+) 

你的代码可以是这样的:

custom = 'number=value1;user=value2;yr=value3' 
 
number=re.findall('(?<=number=)(\w+)',custom) 
user=re.findall('(?<=user=)(\w+)',custom) 
yr=re.findall('(?<=yr=)(\w+)',custom)) 
 
outcome: 
 
print number 
value1  

更新:如 CommuSoft 在他的评论中指出,如果您有空格,正则表达式将不会捕获内容。因此,您可以使用以下方法改进正则表达式:

(?<==)([^;]+) 

因此,您可以为每个参数设置如下内容:

(?<=number=)([^;]+) 
(?<=user=)([^;]+) 
(?<=yr=)([^;]+) 

Working demo