为了账号安全,请及时绑定邮箱和手机立即绑定

使用 reg ex 和 re.sub 匹配模式

使用 reg ex 和 re.sub 匹配模式

开心每一天1111 2023-12-29 16:47:08
我试图从一些数据中删除以下模式,但得到的结果好坏参半。--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]+匹配由一个或多个字母和数字组成的字符串(+表示“一个或多个”)。
"再次匹配字符"
\]匹配字符](并且可以单独指定])。


查看完整回答
反对 回复 2023-12-29
?
月关宝盒

TA贡献1772条经验 获得超5个赞

s = re.sub('--endof\[[^]]+]', '', s)

--endof[这会删除以 开头、后跟任意数量的非]s ( [^]]+) 和 a 的字符串]。适用于任何不包含右括号的文本。


查看完整回答
反对 回复 2023-12-29
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信