我使用pyparsing来解析一个布尔字符串查询。所以我将发送一个看起来像这样的字符串:
string = "'foo' AND 'bar' OR NOT 'foobar'"
我使用sqlQuotedString()
但有时候被解析的字符串会包含其他类型的标点符号,例如撇号,所以它可能是这样的:
string = "'foo' AND 'ba'r' OR NOT 'fo0-bar'"
我尝试设置QuotedString("'", escChar = '\\')
,但我从javascript发送字符串,我似乎找不到在字符串中包含反斜杠的方法。我试过这个:
for(var i = 0; i < v.length; i++) {
if(v[i] === '"') {
v[i] = [v.slice(0, i), "\\", v.slice(v)].join('');
}
}
并且我尝试添加额外的反斜杠("\\\\\\\"
),但字符串仍显示其中没有"\"
。
有没有办法只设置pyparsing,以便它需要一个用方括号括起来的单词,而不是单引号或双引号,即[word]
与'word'
或"word"
?
答案 0 :(得分:1)
使用pyparsing的QuotedString
类,指定'['作为开头字符,并将']'指定为结束字符:
>>> from pyparsing import OneOrMore,QuotedString
>>> bracketed = QuotedString('[',endQuoteChar=']')
>>> OneOrMore(bracketed).parseString('[sldflsdjkf][asdf][sdf]').asList()
['sldflsdjkf', 'asdf', 'sdf']