如何使用Python正则表达式从含转义字符的字符串中提取目标路径
正确实现方案
你字符串里/bin/之后的内容是ANSI终端颜色控制转义序列,全部以转义字符\x1b开头,只要提取到该字符之前的路径再去掉末尾斜杠即可:
import re ss = '/users/parun/kk/jdk/bin/\x1b[01;31m\x1b[kjava\x1b[m\x1b[k' # 正则方案 res = re.match(r'[^\x1b]+', ss).group().rstrip('/') print(res) # 输出:/users/parun/kk/jdk/bin
也可以不用正则直接切片,效率更高:
res = ss[:ss.find('\x1b')].rstrip('/')
原代码错误原因
你写的re.split(r'\/\\')规则是匹配/\组合字符,但你的字符串里路径和转义内容的分隔符是\x1b,完全匹配不到对应分隔符,所以无法得到预期结果。
内容的提问来源于stack exchange,提问作者Rajarshi Das
相关产品推荐
相关产品推荐

