我使用以下正则表达式来搜索和匹配增强赋值运算符:
AUG_ASSIGN = r'\+=|\-=|\*=|@=|/=|%=|/@=|&=|\|=|\^=|\<\<=|\>\>=|\*\*=|//='
我有一种预感,可以使用正向前瞻或正向后视来消除多次出现的“=”。所以,我的第一个搜索是 Python 参考手册中的语法部分。即使在那里,'=' 也多次出现:
augop: "+=" | "-=" | "*=" | "/=" | "%=" | "**="
| ">>=" | "<<=" | "&=" | "^=" | "|="
可以理解,因为标准 BNF 不包括积极的前瞻或后瞻。
接下来,我仔细阅读了 SO 本身给出的建议,因为我输入了这个问题,但我的搜索并没有让我靠近我的预定会面点。是否可以将表达式缩小为:
AUG_ASSIGN = <set of all binary operators>(?=\=)