grok语法转义智能化需求
grok(pattern,escape=True)
如果escape是True则进行自动转义。例如:
pat = r’[%{HTTPDATE:timestamp}],’
转换成:
‘[%{HTTPDATE:timestamp}],’
def escape_metachar(s):
METACHARS = r'.^$*+?{}[]\|()'
ret = ''
flag= False
for i, c in enumerate(s):
if i!=0 and s[i-1]=='%' and s[i]=='{':
ret +=c
flag=True
continue
if flag:
if s[i]=='}':
ret+=c
flag=False
continue
if c in METACHARS:
ret += '\\'
ret += c
return ret