我有一个如下所示的多行字符串:
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/