python中使用正则表达式转义颜色字符串

python中使用正则表达式转义颜色字符串,python,regex,Python,Regex,我正在尝试转义这个序列中的字符串 [0m[ERROR] [1585551547.349979]: Failed to create bragfiles/downtimer/fight100/2020-03-27. Error: 550 Create directory operation failed. 及 再加上偶尔的双重符号 "[0m[32m[INFO] [2020-03-29 23:58:34.695268] Polling for updates from the server for

我正在尝试转义这个序列中的字符串

[0m[ERROR] [1585551547.349979]: Failed to create bragfiles/downtimer/fight100/2020-03-27. Error: 550 Create directory operation failed.

再加上偶尔的双重符号

"[0m[32m[INFO] [2020-03-29 23:58:34.695268] Polling for updates from the server for fight100...[0m"

我以前遇到过这种情况,但在我的情况下似乎不正确:


  • 我一直在尝试各种各样的
    \x1B(?:[@-Z\\-\\\\\\\\\\\\\\\[[0-?]*[-/]*[@-~])
    ,但我认为这不合适

    但到目前为止,我尝试过的正则表达式似乎都不够通用(一个或两个(颜色转义序列))后跟(大写字母括在方括号内)(正面展望)

    使用此字符串:

    s = '''[0m[ERROR] [1585551547.349979]: xyz xyz.
    [0m[32m[INFO] [2020-03-29 23:58:34.695268] hjk hjk.[0m[32m[INFO] [2020-03-29 23:58:34.695268] foo bar foo'''
    
    正向前瞻可防止捕获最后一位



    如果需要删除指定前景和背景色的序列,如

    [2m[93m[0m[32m[INFO] [2020-03-29 23:58:34.695268] foo bar foo
    
    对(一个或多个)而不是(一个或两个)使用
    pat=r''(\[\d+m){1,})(?=\[[A-Z]+\])'


    如果有这样的东西

    [0m[1;37m[ERROR] [1585551547.349979]: xyz xyz.
    [0m[1;37m[0;32m[ERROR] [1585551547.349979]: xyz xyz.
    
    使用
    pat=r''(\[([01];)?\d+m){1,}(?=\[[A-Z]+\])''''


    一些示例字符串在字符串中间显示了颜色序列,希望输出显示它们被替换-与你的评论

    相反。 行首的所有颜色代码


    这些模式将删除字符串中间的序列。

    是否要删除
    [0m
    [32m
    text=text.replace('[0m','').replace('[32m','')
    ?我想对行开头的所有颜色代码执行更多操作。黑色0;30深灰色1;30红色0;31浅红色1;31绿色0;32浅绿色1;32棕色/橙色0;33黄色1;33蓝色0;34浅蓝色1;34紫色0;35浅紫色1;35青色0;36浅青色1;36浅灰色0;37白色1;37是颜色转义序列,后面总是跟着一个
    '[文本]
    sequence?能否可靠地分割字符串,使颜色转义序列位于结果字符串的开头?颜色序列是在字符串的开头还是在句点之前?是否考虑过多次传递?
    "[INFO] [2020-03-29 23:58:34.695268] Polling for updates from the server for fight100..."
    
    pat = r'''((\[\d+m){1,2})(?=\[[A-Z]+\])'''
    
    s = '''[0m[ERROR] [1585551547.349979]: xyz xyz.
    [0m[32m[INFO] [2020-03-29 23:58:34.695268] hjk hjk.[0m[32m[INFO] [2020-03-29 23:58:34.695268] foo bar foo'''
    
    >>> print(re.sub(pat,'',s))
    [ERROR] [1585551547.349979]: xyz xyz.
    [INFO] [2020-03-29 23:58:34.695268] hjk hjk.[INFO] [2020-03-29 23:58:34.695268] foo bar foo
    >>>
    
    [2m[93m[0m[32m[INFO] [2020-03-29 23:58:34.695268] foo bar foo
    
    [0m[1;37m[ERROR] [1585551547.349979]: xyz xyz.
    [0m[1;37m[0;32m[ERROR] [1585551547.349979]: xyz xyz.