[PYTHON] re.group, re.compile und re.VERBOSE

import re

s = ('arn:aws:cloudformation:us-east-2:123456789012:stack/'
     'mystack-mynestedstack-sggfrhxhum7w'
     '/f449b250-b969-11e0-a185-5081d0136786')

# [\w-]Bedeutet alphanumerisch oder Bindestrich
#Ich habe einen Gruppennamen
m = re.match(r'arn:aws:cloudformation:(?P<region>[\w-]+):(?P<account_id>[\d]+)'
             r':stack/(?P<stack_name>[\w-]+)/[\w-]+', s)

if m:
    #Kann über den Gruppennamen zugegriffen werden
    print(m.group('region'))
    print(m.group('account_id'))
    print(m.group('stack_name'))

Bei Verwendung von re.compile

Es ist effizient, wenn Sie den Teil des regulären Ausdrucks mehrmals schreiben.

import re

s = ('arn:aws:cloudformation:us-east-2:123456789012:stack/'
     'mystack-mynestedstack-sggfrhxhum7w'
     '/f449b250-b969-11e0-a185-5081d0136786')

RE_STACK_ID = re.compile(r'arn:aws:cloudformation:(?P<region>[\w-]+):(?P<account_id>[\d]+)'
                         r':stack/(?P<stack_name>[\w-]+)/[\w-]+')

m = RE_STACK_ID.match(s)

if m:
    #Kann über den Gruppennamen zugegriffen werden
    print(m.group('region'))
    print(m.group('account_id'))
    print(m.group('stack_name'))

Darüber hinaus im Fall von re.VERBOSE

Ich kann wunderschön schreiben

import re

s = ('arn:aws:cloudformation:us-east-2:123456789012:stack/'
     'mystack-mynestedstack-sggfrhxhum7w'
     '/f449b250-b969-11e0-a185-5081d0136786')

RE_STACK_ID = re.compile(r"""
    arn:aws:cloudformation:
    (?P<region>[\w-]+):             #region
    (?P<account_id>[\d]+):          #account_id
    stack/
    (?P<stack_name>[\w-]+)/         #stack_name
    [\w-]+""", re.VERBOSE)

m = RE_STACK_ID.match(s)

if m:
    #Kann über den Gruppennamen zugegriffen werden
    print(m.group('region'))
    print(m.group('account_id'))
    print(m.group('stack_name'))

Recommended Posts

re.group, re.compile und re.VERBOSE
re.split und re.compile
Aufteilen von re.split und Ersetzen von re.compile