Skip to main content
 首页 » 编程设计

python之难以编写正确的正则表达式

2025年05月04日16youxin

我正在尝试匹配以下文本中的项目编号:

User Number 1 will probably like movie ID: RecommendedItem[item:557, value:7.32173]the most! 

这是我尝试过的:

 myfile = open('result.txt', 'r') 
 
 for line in myfile: 
  m = re.search('(?<=RecommendedItem\[item:).+,', line) 
  print m 

但是,这给我一个错误:

<_sre.SRE_Match object at 0x106e79168> 

我想知道后视断言可能有什么问题...(后视断言似乎在 regexpal.com 上不起作用,即使像 (?<=a)b 这样简单的东西在那里以红色突出显示)

请您参考如下方法:

这不是错误! re.search 的结果是一个 MatchObject。其中包含其中的匹配项,可通过 MatchObject.group(groupNumber,...)(还有其他方式,例如 groups() 等)访问,如此处所述:group .你会想要一个如下的正则表达式来做你要求的事情:

import re 
t = "User Number 1 will probably like movie ID: RecommendedItem[item:557, value:7.32173]the most!" 
itemNumber = re.search(r'(?<=RecommendedItem\[item:)(\d+)',t) 
print(itemNumber.group(0)) 

或者,使用命名组:

import re 
t = "User Number 1 will probably like movie ID: RecommendedItem[item:557, value:7.32173]the most!" 
itemNumber = re.search(r'(?<=RecommendedItem\[item:)(?P<itemNumber>\d+)',t) 
print(itemNumber.groupdict()["itemNumber"]) #note using groupdict() not group() 

生产

>>>  
557