我还有一个查询
这是两个句子
[1,12:12] call basic_while1() Error Code: 1046. No database selected
[1,12:12] call add() Asdfjgg Error Code: 1046. No database selected
[1,12:12] call add()
[1,12:12]
Error Code: 1046. No database selected
现在我要获得这样的输出
['1','12:12',"call basic_while1"]
,['1','12:12', 'call add() Asdfjgg']
,['1','12:12', 'call add()']
,['1','12:12']
,['','','',' Error Code: 1046. No database selected']
我使用了这个
r'^\[(\d+),(\s[0-9:]+)\]\s+(.+)
这是我的主要正则表达式,然后根据我的关注我对其进行了修改,但它没有帮助我想删除“错误代码”之前的所有内容
该怎么做?
答案 0 :(得分:0)
如果您想在单个正则表达式中执行此操作,则该模式将显得有些笨拙:(?:^\[(\d+),(\s?[0-9:]+)\](?:\s+(.+?)\s?)?(?:Error Code:.*)?$)|(?:()()()(Error Code:.*$))
>>> s = """[1,12:12] call basic_while1() Error Code: 1046. No database selected
... [1,12:12] call add() Asdfjgg Error Code: 1046. No database selected
... [1,12:12] call add()
... [1,12:12]
... Error Code: 1046. No database selected"""
>>> pattern = re.compile(r'(?:^\[(\d+),(\s?[0-9:]+)\](?:\s+(.+?)\s?)?(?:Error Code:.*)?$)|(?:()()()(Error Code:.*$))')
>>> for line in s.split('\n'):
... print(pattern.match(line).groups())
...
['1', '12:12', 'call basic_while1()']
['1', '12:12', 'call add() Asdfjgg']
['1', '12:12', 'call add()']
['1', '12:12']
['', '', '', 'Error Code: 1046. No database selected']
我是regex101.com的忠实粉丝,尝试以交互方式创建正则表达式。
答案 1 :(得分:0)
基本上,您要求获取“错误代码”之前的所有内容
我想删除“错误代码”之前的所有内容
因此很简单,请尝试:find = re.search('((.)+)(\sError Code)*',s)
和find.group(1)
会给您'[1,12:12] call add() Asdfjgg'
,这正是您想要的。
如果在获得该字符串之后,您想要list
来请求:
desired_list = find.group(1).replace('[','').replace(']','').replace(',',' ').split()