所以我有......
regex = re.compile('\d{4,}:\s##(.*)##')
regex_search = regex.search(line.mesg)
# This code is abbreviated. I go on to do things with
# "result" in the try block but rather than junk up this
# post, here's the gist:
try:
result = regex_search.group(1)
except AttributeError:
print regex_search
示例' line.mesg'输入(line.mesg的4个独立实例):
##Loading task.##
##BEEP (375,2)##
##Aisle One One Seven##;pp
##Good night.##
现在,根据pythex.org (click to see)的测试,我应该从中获得结果。然而,每次我执行该代码时,它都会出现异常,而print regex_search
会打印出“无”#。
我不确定这里有什么问题,任何帮助都会受到赞赏。
编辑:我是个白痴 - 我正在测试的内容以及我实际投入的内容并不是同一件事。上面的正则表达式确实适用于我最初输入的内容(以及上面pythex链接中的内容),但实际上我在第二个代码块中输入的是regex.search。TL; DR:不出所料,当你依靠数字来匹配你的正则表达式,然后那些数字不在那里时,正则表达式就不匹配。
答案 0 :(得分:1)
啊,我看到了这个问题,如果您不再使用search
,可以使用re.findall,如下例所示。
import re
line = '''(5/12/14 10:22:36 AM EDT) 34438: ##Loading task.##
(5/12/14 10:22:52 AM EDT) 3094962: ##BEEP (375,2)##
(5/12/14 10:22:52 AM EDT) 3095975: ##Aisle One One Seven##;pp
(5/12/14 10:40:07 AM EDT) 4132712: ##Good night.##'''
regex = re.compile('\d{4,}:\s##(.*)##+')
regex_search = regex.findall(line)
try:
for result in regex_search.groups():
print result
except AttributeError:
print regex_search
返回
['Loading task.', 'BEEP (375,2)', 'Aisle One One Seven', 'Good night.']
答案 1 :(得分:0)
似乎不正确:
我不知道你的line.mesg的确切输入格式,所以有可能出现问题。但是以下代码有效:
import re
line = '''\
(5/12/14 10:22:36 AM EDT) 34438: ##Loading task.##
(5/12/14 10:22:52 AM EDT) 3094962: ##BEEP (375,2)##
(5/12/14 10:22:52 AM EDT) 3095975: ##Aisle One One Seven##;pp
(5/12/14 10:40:07 AM EDT) 4132712: ##Good night.##
'''
regex = re.compile('\d{4,}:\s##(.*)##')
for line_msg in line.split('\n'):
regex_search = regex.search(line_msg)
try:
result = regex_search.group(1)
print result # result should be printed here
except AttributeError: # remove the ":" after "except"
print regex_search