我有一个如下所示的多行字符串:

st = '''emp:firstinfo\n
       :secondinfo\n
       thirdinfo
     '''
print(st)


我想要做的是从我的字符串中跳过第二个':',并获得如下所示的输出:

'''emp:firstinfo\n
   secondinfo\n
   thirdinfo
   '''


如果它以':'开头,我只是想忽略它。

这是我所做的:

mat_obj = re.match(r'(.*)\n*([^:](.*))\n*(.*)' , st)
print(mat_obj.group())


显然,我没有看到我的错误,但是任何人都可以帮助我告诉我哪里出错了吗?

最佳答案

您可以在此正则表达式中使用re.sub

>>> print (re.sub(r'([^:\n]*:[^:\n]*\n)\s*:(.+)', r'\1\2', st))
emp:firstinfo
secondinfo

       thirdinfo


RegEx Demo

正则表达式详细信息:


(:开始第一个捕获组


[^:\n]*:匹配0个或多个非:字符和换行符
::匹配冒号
[^:\n]*:匹配0个或多个非:字符和换行符
\n:匹配新行

):结束第一个捕获组
\s*:匹配0个或多个空格
::匹配冒号
(.+):匹配第二个捕获组中的任何一个或多个字符(换行符除外)
\1\2:用于替换以放回在组1和2中捕获的子字符串。

关于python - 如何在python中使用正则表达式从多行字符串中删除特定字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58046910/

10-12 18:12
查看更多