楚人有卖其珠于郑者, 为木兰 [1] 之柜 [2] , 薰以桂椒 [3] , 缀以珠玉, 饰以玫瑰 [4], 辑 [5] 以羽翠。
郑人买其椟 [6] 而还其珠。
此可谓善卖椟矣, 未可谓善鬻 [7] 珠也。 能否生成正则表达式把方括号中的内容和方括号一起去掉。
import re
text = "楚人有卖其珠于郑者,为木兰 [1] 之柜 [2] ,薰以桂椒 [3] ,缀以珠玉,饰以玫瑰 [4],辑 [5] 以羽翠。郑人买其椟 [6] 而还其珠。此可谓善卖椟矣,未可谓善鬻 [7] 珠也。"
cleaned_text = re.sub(r'\[[^]]*\]', '', text)
print(cleaned_text)
运行这段代码后,cleaned_text 将会是:
“楚人有卖其珠于郑者,为木兰之柜,薰以桂椒,缀以珠玉,饰以玫瑰,辑以羽翠。郑人买其椟而还其珠。此可谓善卖椟矣,未可谓善鬻珠也。”
这里正则表达式 \[[^]]*\] 的工作原理是:
\[和\]分别匹配左方括号[和右方括号];[^]]*匹配任何不在右方括号内的字符序列,*表示前面的字符可以重复任意次数(包括零次)。因此,整个表达式匹配任何在方括号内的一切内容,并将其替换为空字符串,即删除之。
发表评论