Python使用re.sub正则表达式保留-c和csv的需求求助
解决re.sub保留'-c'和'csv'的问题
你的需求是把输入字符串'-c dir/dir/dir/file.csv'处理为'-c csv',原正则的问题是直接把从-c到csv的整个片段替换为空,导致结果为空字符串。这里提供两种可行的正则方案:
方案1:捕获保留内容重组
使用捕获组分别匹配开头的-c和结尾的csv,替换时将两个捕获组用空格拼接:
import re result = re.sub(r'(-c).*(csv)', r'\1 \2', '-c dir/dir/dir/file.csv') print(result) # 输出:'-c csv'
原理:正则(-c).*(csv)会匹配整个输入字符串,其中(-c)捕获开头的-c,.*匹配中间所有内容,(csv)捕获结尾的csv;替换时用\1和\2引用两个捕获组,中间加空格即可得到目标结果。
方案2:替换中间冗余内容
匹配-c之后到csv之前的所有内容,替换为空格:
import re result = re.sub(r'(-c).*(?=csv)', r'\1 ', '-c dir/dir/dir/file.csv') print(result) # 输出:'-c csv'
原理:(?=csv)是正向预查,确保匹配的内容后面紧跟csv,这样(-c).*(?=csv)会匹配-c dir/dir/dir/file.这部分,替换为-c 后,剩下的csv自动拼接在后面,得到目标字符串。
内容的提问来源于stack exchange,提问作者codingInMyBasement
相关产品推荐
相关产品推荐

