删除特殊字符模式的正则表达式

现在我在 pandas 数据框中得到了一个像这样的字符串


"[""www.abccc.com"]"", "[""www.gsfa.com"]""

所以我想做的是用正则表达式替换“[”和“]”


我尝试了几种组合来首先抓住模式,例如:


r' \["[""] '

r' [\"[""] '

r' [\"[\""] '

一切都不起作用......当我在 regex101 中使用以下内容时:


[\"[\"\"] 

我为每个特殊字符匹配了 4 次,而不是一次匹配所有模式。


任何人都可以让我知道,我该如何解决这个问题?


胡子哥哥
浏览 146回答 5
5回答

跃然一笑

您能做的最好的事情就是删除 the[""和 the ]"",这样剩下的就只有引号了。import reregex = r'(\[\"\"|\]\"\")'data = r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'print(re.sub(regex, '', data))这给出:"www.abccc.com", "www.gsfa.com"

守着一只汪

import rerecheck = re.compile(r'\"[\[\]]\"\"')print(recheck.sub(' ', r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'))应该工作,它将匹配“,然后是[或],然后是两个“”。括号表示 re 应该检查哪些字符,所以 [""] 最终匹配一个双引号,而 ["'] 将匹配一个字符的单引号或双引号。这就是为什么我的 re 匹配左边或三个双引号内的右括号。

慕森卡

另一种选择:import regex as rerx = re.compile(r'(?:\G(?!\A)|\[)[^]]+')some_junky_string = '"[""www.abccc.com"]"", "[""www.gsfa.com"]""'content = [m.group(0).strip('"') for m in rx.finditer(some_junky_string)]print(content)

有只小跳蛙

你说你正在使用熊猫,所以你需要df['col'] = df['col'].str.replace(r'"*\["*|"*]"*', '"')解释NODE                     EXPLANATION--------------------------------------------------------------------------------  "*                       '"' (0 or more times (matching the most                           amount possible))--------------------------------------------------------------------------------  \[                       '['--------------------------------------------------------------------------------  "*                       '"' (0 or more times (matching the most                           amount possible))-------------------------------------------------------------------------------- |                        OR--------------------------------------------------------------------------------  "*                       '"' (0 or more times (matching the most                           amount possible))--------------------------------------------------------------------------------  ]                        ']'--------------------------------------------------------------------------------  "*                       '"' (0 or more times (matching the most                           amount possible))

喵喵时光机

将匹配项替换为r'(\"\[\"|\"\]\")'空字符串 ( '') 即可得到您要查找的输出。该模式使用匹配的捕获组:"["字符串开头的前导尾随"]"字符串的末尾将此作为第一个参数传递,re.sub(pattern, substitution, string)将空字符串作为第二个参数传递,将要操作的字符串作为第三个参数传递,将导致用空字符串替换上面定义的匹配项 - 让您只在开始和结束"时根据您的原始问题生成的字符串。下面的完整示例。import reresult = re.sub(r'(\"\[\"|\"\]\")', '', r'"[""www.abccc.com"]""')print(result)output: "www.abccc.com"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python