尝试使用re.sub替换括号和单引号空格,其引发错误来自[' flag = no']
import re
import subprocess
#string to search text
lst = r'(flask) C:\Users\user1\AppData\Local\Programs\Python\Python35-enter code heretion>python secureassistchk.py flag = no'
#search flag = no within string & return "['flag = no']
dat = re.findall('flag.*', lst)
print("Print FLAG:", dat)
# replace [' with blank space , this doesn't work
#dat3 = re.sub('[\(\)\{\}<>]', '', dat)
#dat3 = re.sub('\b[]\b','', dat)
dat3 = re.sub('[ ]','',dat)
print("Print FLAG:", dat3)
答案 0 :(得分:1)
错误是由dat
是列表而非字符串引起的。
尝试:
dat = re.findall('flag.*', lst)[0]
答案 1 :(得分:-1)
在这里,我为你解决了这个问题:
代码:
dat3 = re.sub('\[|\]','', str(dat))
print("Print FLAG:", dat3)
结果:
"'flag = no'"
修改强>
好的,我错过了关于引号的部分。这是正确的正则表达式:
dat3 = re.sub('\[|\]|\'','', str(dat))
Maciek解释了初始查询中的第一个问题: dat不是字符串对象。
您的查询的第二个问题是,如果要替换的字符是特殊字符,则必须使用\来对其进行转义。你还必须用管道链接它们(a.k.a&#39; |&#39;字符)。
例如,如果要在替换字符列表中添加空格,则正则表达式将更改为:
dat3 = re.sub('\[|\]|\'| ','', str(dat))
您应该注意到额外的管道和空格字符。