我正在尝试提取赋值运算符和条件运算符(和|或)的位置。我对正则表达式非常陌生,因此如果方法错误,请多多包涵。如果有人可以为上述声明提供正则表达式作为示例,我也将不胜感激。
现在,我正在通过一堆python函数解析字符串和括号以获取索引,并且我已经成功实现了。我想尝试使用正则表达式来查看它是否简化了解决方案。
test = "((condition one = 14) or ((condition two = 10) and (condition three = null)))"
re.search("(and$)", test).start()
m = re.search("and", test)
m.group()
预期结果-'and'起始位置的索引
实际结果-NoneType对象没有属性开始
答案 0 :(得分:1)
您正在寻找正则表达式,例如:
test = "((condition one = 14) or ((condition two = 10) and (condition three = null)))"
i = re.search("(and)|(or)", test).start()
print i
这会打印出找到的第一个and
或or
的位置:
22
编辑:要使用finditer
,您需要对上述代码进行一些更新:
test = "((condition one = 14) or ((condition two = 10) and (condition three = null)))"
pattern = re.compile(r"(and)|(or)")
for m in pattern.finditer(test):
print(m.start())
输出:
22
47
答案 1 :(得分:0)
只需输入您要查找的字词,即可简化正则表达式。
import re
test = "((condition one = 14) or ((condition two = 10) and (condition three = null)))"
i = re.search("and", test).start()
print(test[i:])
和(条件三=空))