是否有可能在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等)
据我所知,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