regex 有条件地适用于I

r6l8ljro  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(119)

我有下面的模式:

if is_ci:
    re.match(token_pattern, substring, flag=re.I)
else:
    re.match(token_pattern, substring)

有没有办法直接有条件地设置re.I(或任何其他标志)?例如,类似于:

re.match(token_pattern, substring, re.I = is_ci)

我知道在py3.11中有NOFLAG,但是我在py3.9上。

nuypyhwy

nuypyhwy1#

re标志是可以进行“与”运算的位,NOFLAG表示0,因此,如果不需要,可以将标志设置为0,如果需要,可以使用re.I(实际上是2):

re.match(token_pattern, substring, flags=re.I if is_ci else 0)

或者,您也可以在程序顶部有条件地定义re.NOFLAG以用途:

re.NOFLAG = 0

...

re.match(token_pattern, substring, flags=re.I if is_ci else re.NOFLAG)

相关问题