如何在Python中为正则表达式的一部分设置ignorecase标志?

发布于 2021-01-29 14:11:03

是否有可能在Python中实现以下简单的功能:

#!/usr/bin/perl
my $a = 'Use HELLO1 code';
if($a =~ /(?i:use)\s+([A-Z0-9]+)\s+(?i:code)/){
    print "$1\n";
}

字符串中间的记号字母总是大写。其余单词的字母可以有大小写(USE,USE,Use,CODE,CODE,CODE等)

关注者
0
被浏览
107
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    据我所知,python正则表达式引擎不支持部分忽略大小写。这是一个使用不区分大小写的正则表达式的解决方案,该表达式随后测试令牌是否为大写。

    #! /usr/bin/env python
    
    import re
    
    token_re = re.compile(r'use\s+([a-z0-9]+)\s+code', re.IGNORECASE)
    def find_token(s):
        m = token_re.search(s)
        if m is not None:
            token = m.group(1)
            if token.isupper():
                return token
    
    if __name__ == '__main__':
        for s in ['Use HELLO1 code',
                  'USE hello1 CODE',
                  'this does not match',
                 ]:
            print s, '->',
            print find_token(s)
    

    这是程序的输出:

    Use HELLO1 code -> HELLO1
    USE hello1 CODE -> None
    this does not match -> None
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看