我试图从一些数据中删除以下模式,但得到的结果好坏参半。--endof["somerandomtext"]基本上,文本总是以 开头--endof["和结尾,"]并且之间的单词会发生变化。我正在使用的代码行目前无法正常工作。d = re.sub('--+([a-zA-Z0-9_"-\[]*)+\]', " ", d)我是尝试使用 re.sub 或任何方法解析数据的新手。我一直在猜测如何尝试使这条线正常工作,我可能有一些错误导致了我的问题。任何帮助表示赞赏。
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
要删除以 开头--endof["
和结尾的文本"]
,您应该将它们匹配为精确字符,并匹配中间的子字符串。
因为[
和]
在正则表达式中具有特殊含义,所以您需要使用\
(如注释中正确所述,]
不必在此处转义,为了更加清晰而将其转义)对它们进行转义。
在此示例中,中间的子字符串由一个或多个字母和数字组成(因此是+
)。它可以根据需要进行更改。
str = re.sub('--endof\["[a-zA-Z0-9]+"\]', "", str)
为了进一步打破这个问题 -
--endof
完全匹配这些字符。\[
匹配字符[
。"
匹配字符"
。[a-zA-Z0-9]+
匹配由一个或多个字母和数字组成的字符串(+
表示“一个或多个”)。"
再次匹配字符"
。\]
匹配字符]
(并且可以单独指定]
)。
月关宝盒
TA贡献1772条经验 获得超5个赞
s = re.sub('--endof\[[^]]+]', '', s)
--endof[
这会删除以 开头、后跟任意数量的非]
s ( [^]]+
) 和 a 的字符串]
。适用于任何不包含右括号的文本。
添加回答
举报
0/150
提交
取消