Պայթոնում ռեգուլյար արտահայտությունների տողերի դրոշներ

Մեթոդներին, որոնք աշխատում են ռեգուլյար արտահայտությունների հետ, դրոշները որպես ընտրովի պարամետր նշելու համար օգտագործվում է հետևյալ շարահյուսությունը.

pythonflags=re.դրոշի_անունը

Ռեգուլյար արտահայտությունների հետ աշխատանքի հիմնական դրոշները

Դրոշ Նպատակը
re.IGNORECASE Կերպարների գրելաձևի ռեգիստրի անտեսում:
re.DOTALL Կետը նշանակում է ցանկացած նիշ, ներառյալ տողի տեղափոխումը:
re.I Որոնումը դարձնում է անզգա ռեգիստրի նկատմամբ:
re.L Որոնում է բառեր ընթացիկ լեզվին համապատասխան: Այս մեկնաբանությունը ազդում է այբբենական խմբի վրա (\w և \W), ինչպես նաև բառի սահմանի վարքագծի վրա (\b և \B):
re.M $ նիշը որոնում է կատարում տեքստի ցանկացած տողի վերջում (ոչ միայն տեքստի վերջում) իսկ ^ նիշը որոնում է կատարում տեքստի ցանկացած տողի սկզբում (ոչ միայն տեքստի սկզբում):
re.S Փոխում է կետի (.) արժեքը՝ դարձնելով այն համընկնում ցանկացած նիշի հետ, ներառյալ նոր տողը:
re.U Մեկնաբանում է տառերը Unicode նիշերի հավաքածուին համապատասխան: Այս դրոշը ազդում է \w, \W, \b, \B վարքագծի վրա: Python 3+-ում այս դրոշը նախադրված է լռելյայն:
re.X Թույլ է տալիս ռեգուլյար արտահայտության բազմատող շարահյուսություն: Այն անտեսում է բացատները նախշի ներսում (բացառությամբ բացատների [] հավաքածուի ներսում կամ երբ էկրանավորված են հակադարձ շեղով) և չէկրանավորված '#' նիշը դիտարկում է որպես մեկնաբանություն:

Օրինակ

Օգտագործելով re.IGNORECASE դրոշը, կարելի է անտեսել նիշերի ռեգիստրը: Եկեք տեսնենք, թե ինչպես է դա արվում: Այս օրինակում ռեգուլյար արտահայտությունը կգտնի միայն փոքրատառ տառերը:

pythontxt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)

print(res)

Կոդի կատարման արդյունքը:

python'! ! CCC DDD'

Օրինակ

Այժմ ավելացնենք re.IGNORECASE դրոշը մեթոդի չորրորդ պարամետրում, և ռեգուլյար արտահայտությունը կսկսի որոնել նիշեր բոլոր ռեգիստրներում.

pythontxt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)

print(res)

Կոդի կատարման արդյունքը.

python'! ! ! !'

Օրինակ

Եկեք գտնենք ռեգուլյար արտահայտությամբ բոլոր տողերի տեղափոխումները.

pythontxt = '''aaa
  bbb'''
res = re.sub('\n', '!', txt)

print(res)

Կատարված կոդի արդյունքը.

python'aaa!bbb'

Օրինակ

Բայց, եթե անհրաժեշտ է փոխարինել բոլոր նիշերը, ապա ռեգուլյար արտահայտության մեջ կետ դնելով, չեն բռնվելու տողերի տեղափոխումները.

pythontxt = '''aaa
  bbb'''
res = re.sub('.', '!', txt)

print(res)

Կատարված կոդի արդյունքը.

python'!!!
!!!'

Օրինակ

Այս սխալը ուղղելու համար, պետք է կիրառել re.DOTALL դրոշը.

pythonres = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)

Կատարված կոդի արդյունքը.

python'!!!!!!!'

Օրինակ

Պարամետրում կարելի է փոխանցել նաև մի քանի դրոշ՝ դրանց միջև դնելով + օպերատորը: Եկեք նախ փոխարինենք 'a' տառը տողի վերջում.

pythontxt = '''
  aaa
  AAA
  aaa'''
res = re.sub('aaa
', '!', txt)

print(res)

Կատարված կոդի արդյունքը.

python'''
  aaa
  AAA
  !
'''

Օրինակ

Այժմ դնենք re.M դրոշը.

pythonres = re.sub('aaa
', '!', txt, flags=re.M)
print(res)

Կատարված կոդի արդյունքը.

python'''
  !
  AAA
  !
'''

Օրինակ

Եկեք այժմ կիրառենք նաև ռեգիստրի անտեսման դրոշը.

pythonres = re.sub('aaa
', '!', txt, flags=re.M+re.IGNORECASE)
print(res)

Կատարված կոդի արդյունքը.

python'''
  !
  !
  !
'''