如何在python中使用正则表达式从多行字符串中删除特定字符
我有一个多行字符串,如下所示:如何在python中使用正则表达式从多行字符串中删除特定字符,python,regex,Python,Regex,我有一个多行字符串,如下所示: st = '''emp:firstinfo\n :secondinfo\n thirdinfo ''' print(st) '''emp:firstinfo\n secondinfo\n thirdinfo ''' 我试图做的是跳过字符串中的第二个“:”,并获得如下输出: st = '''emp:firstinfo\n :secondinfo\n thirdinfo
st = '''emp:firstinfo\n
:secondinfo\n
thirdinfo
'''
print(st)
'''emp:firstinfo\n
secondinfo\n
thirdinfo
'''
我试图做的是跳过字符串中的第二个“:”,并获得如下输出:
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
正则表达式详细信息:
:启动第一个捕获组(
:匹配0个或更多非[^:\n]*
字符和换行符:
:匹配冒号:
:匹配0个或更多非[^:\n]*
字符和换行符:
:匹配新行\n
:结束第一个捕获组)
:匹配0个或多个空格\s*
:匹配冒号:
:匹配第二个捕获组中的一个或多个字符(换行符除外)(.+)
:用于替换以放回在组1和组2中捕获的子字符串\1\2
(.*\n)[^:]*:(.*\n)(.*)
取而代之
\1\2\3
进口稀土
#remove character in a String and replace with empty string.
text=“电影《低俗小说》于1994年发行”
结果=re.sub(r“[a-z]”,“”,文本)
打印(结果)要删除的
:
位置的具体区别是什么?它是否总是字符串中的第二个:
?