我正在尝试匹配以下文本中的项目编号:
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
