pyparsing-字符串解析以生成Where子句

时间:2018-08-02 05:39:04

标签: python pyparsing

我有一个看起来像这样的字符串-

$html ="<div align=center><object><embed src='http://www.GamesForWork.com/games/swf/Rodent Tree Jump january 4th 2007.swf' quality='autohigh' wmode='direct' width='640' height='400' name='gameObj' align='middle' allowScriptAccess='always' allowFullScreen='false' type='application/x-shockwave-flash' pluginspage='http://www.adobe.com/go/getflashplayer'/></object><br><font face=verdana size=1><a href='http://www.gamesforwork.com/' target='_blank'>10 daily games at gamesforwork.com</a></font></div>
";

$dom = new DOMDocument;
@$dom->loadHTML($html);

// get all embed elements 
$links = $dom->getElementsByTagName('embed');

//Iterate over the extracted elements and display their URLs
foreach ($links as $link){
    //Extract and show the "src" attribute.
    echo $link->getAttribute('src'), '\n';
}

我想将其转换为以下格式:

((COL1==VAL1)+(COL2==VAL2))

另一个例子-

发件人:

((a.col1 == 'VAL1') & (a.col2 == 'VAL2'))

收件人:((COL1==VAL1)|(COL2==VAL2/A))

有人可以帮忙吗?

代码:

((a.col1 == 'VAL1') | (a.col2 == 'VAL2/A'))

这种工作仅适用于一个表达式:(a.col1 =='VAL1')。但是我希望它能够处理多个表达式。

1 个答案:

答案 0 :(得分:0)

这实际上是pyparsing的infixNotation方法的不错选择。定义用于相等性比较的表达式,然后将其用作简单的NOT / AND / OR infixNotation解析器中的操作数。

infixNotation将处理所有括号的嵌套,并且还将帮助您应用运算的优先级。