用方括号包裹单词而不是 sglQuotedString 或 dblQuotedString
Wrap Words in Square Bracket Instead of sglQuotedString or dblQuotedString
我正在使用 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"
?
使用pyparsing的QuotedString
class,指定'['作为开始字符,']'作为结束字符:
>>> from pyparsing import OneOrMore,QuotedString
>>> bracketed = QuotedString('[',endQuoteChar=']')
>>> OneOrMore(bracketed).parseString('[sldflsdjkf][asdf][sdf]').asList()
['sldflsdjkf', 'asdf', 'sdf']
我正在使用 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"
?
使用pyparsing的QuotedString
class,指定'['作为开始字符,']'作为结束字符:
>>> from pyparsing import OneOrMore,QuotedString
>>> bracketed = QuotedString('[',endQuoteChar=']')
>>> OneOrMore(bracketed).parseString('[sldflsdjkf][asdf][sdf]').asList()
['sldflsdjkf', 'asdf', 'sdf']