gpt4 book ai didi

Python re.IGNORECASE 是动态的

转载 作者:行者123 更新时间:2023-12-01 06:17:08 30 4
gpt4 key购买 nike

我想做这样的事情:

re.findall(r"(?:(?:\A|\W)" + 'Hello' + r"(?:\Z|\W))", 'hello world',re.I)

并且 re.I 是动态的,因此我可以即时进行区分大小写或不区分大小写的比较。这有效但没有记录:

re.findall(r"(?:(?:\A|\W)" + 'Hello' + r"(?:\Z|\W))", 'hello world',1)

将其设置为敏感。有Pythonic的方法来做到这一点吗?到目前为止我最好的想法是:

if case_sensitive:
regex_senstive = 1
else:
regex_sensitive = re.I
re.findall(r"(?:(?:\A|\W)" + 'Hello' + r"(?:\Z|\W))", 'hello world',regex_sensitive)

最佳答案

要获得默认行为,您可以使用 0 作为 flags 参数。您不应该使用 1,因为它会设置未记录的 re.TEMPLATE 标志,从而禁用回溯。

所以你可以使用:

flags = 0 if case_sensitive else re.I
re.findall(r'pattern', s, flags)

flags 参数实际上是标志的组合(re.Ire.M 等),每个标志由单个位表示。当未设置任何位(值 0)时,将使用默认行为。

关于Python re.IGNORECASE 是动态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701844/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com