我有多种表达方式
c1|<|5&&c2|>=|750&&c3|=|1
c1|<|5&&(c2|>=|750||c3|=|1)
c1|<|5&&(c2|>=|750||c3|=|1)&&c4|=|1
c1|<|5&&c2|>=|750||c3|=|1&&c4|=|1
(c1|<|5||c2|>=|750||c3|=|1)&&c4|=|1
有什么方法可以让正则表达式获取每个运算符&&和||之前的条件。喜欢:
c1 | <| 5 && c2 |> = | 750 && c3 | = | 1->(c1 | <| 5)&&(c2 |> = | 750)&&(c3 | = | 1)
c1 | <| 5 &&(c2 |> = | 750 || c3 | = | 1)->(c1 | <| 5)&&((c2 |> = | 750)||(c3 | = | 1 ))
c1 | <| 5 &&(c2 |> = | 750 || c3 | = | 1)&& c4 | = | 1->(c1 | <| 5)&&((c2 |> = | 750)|| (c3 | = | 1))&&(c4 | = | 1)
因此,理想情况下,我们在前两种情况下应获得3个条件,而在后一种情况下应获得4个条件。任何帮助都将真正有用。
答案 0 :(得分:0)
不清楚您想要什么,但是此sed命令将您的示例输入转换为示例输出:
sed -e 's/\&\&\|||/) & (/g;s/.*/(&)/'
如果要解析表达式(例如,您的几个示例都包含嵌套的括号(大概表示优先级)),则不应使用正则表达式引擎。实现Dijkstra's shunting yard algorithm来处理这种类型的输入很简单。