python解析带有规则的字符串

时间:2014-11-21 17:12:32

标签: python regex

s = '>50&<100'
s2 = '>30'
s3 = '<30'
s4 = '=10'
s5 = '!=10'
s6 = '>2|<5'

所以我的字符串应该是:

  • 比较运算符(&lt;&gt; =!=) 后跟一个整数值 - &gt;我们称之为EXPRESSION

  • 可选逻辑运算符(|&amp;) 然后是EXPRESSION

最好的方法是什么:

一个。验证输入字符串 b解析它,这样我就可以在有效的python中创建表达式

P.S 我可以使用正则表达式解决方案。我正在考虑创建一个语法并将其解析为树。

2 个答案:

答案 0 :(得分:1)

您可以通过关注创建regex,如评论中所述,如果您需要通用解决方案,则需要使用此模式:

s = '>\d+&<\d+'
s2 = '>\d+'
s3 = '<\d+'
s4 = '=\d+'
s5 = '!=\d+'
s6 = '>\d+|<\d+'

string_list=[s,s2,s3,s4,s5,s6]
rx = re.compile('|'.join(map(re.escape, string_list)))

然后使用正确的re函数(例如:rx.match(string))!

  

<强> re.escape(字符串)       返回字符串,所有非字母数字反向;如果要匹配可能包含正则表达式元字符的任意文字字符串,这非常有用。

答案 1 :(得分:1)

正则表达式怎么样

^(<|>|!=|=)\d+([&|](<|>|!=|=)\d+)*

示例:http://regex101.com/r/fX5lC2/2