How to set ignorecase flag for part of regular expression in Python?

后端 未结 3 1513
臣服心动
臣服心动 2020-12-19 07:54

Is it possible to implement in Python something like this simple one:

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


        
3条回答
  •  时光取名叫无心
    2020-12-19 08:37

    Since python 3.6 you can use flag inside groups :

    (?imsx-imsx:...)

    (Zero or more letters from the set 'i', 'm', 's', 'x', optionally followed by '-' followed by one or more letters from the same set.) The letters set or removes the corresponding flags: re.I (ignore case), re.M (multi-line), re.S (dot matches all), and re.X (verbose), for the part of the expression.

    Thus (?i:use) is now a correct syntaxe. From a python3.6 terminal:

    >>> import re
    >>> regex = re.compile('(?i:use)\s+([A-Z0-9]+)\s+(?i:code)')
    >>> regex.match('Use HELLO1 code')
    <_sre.SRE_Match object; span=(0, 15), match='Use HELLO1 code'>
    >>> regex.match('use HELLO1 Code')
    <_sre.SRE_Match object; span=(0, 15), match='use HELLO1 Code'>
    

提交回复
热议问题