В этой многосекционной итеративной серии вы познакомитесь с якорями и подстановочными знаками расширенных регулярных выражений, которая является продолжением части 4 серии.

Якоря используются для указания начала и конца строки.

два символа привязки: «^» и «$».

«^» указывает начало строки. Символы после «^» в шаблоне являются первым символом строки для сопоставления с шаблоном.

Точно так же в конце строки указывается «$». Символ, предшествующий «$» в шаблоне, должен быть последним символом в строке, чтобы строка соответствовала шаблону.

В одном регулярном выражении могут быть указаны оба якоря. Например, шаблон регулярного выражения «⁰¹*0$» должен соответствовать любой строке, которая начинается и заканчивается нулями и с любым количеством единиц между ними. Будут совпадать «010», «01110», «01111111110» и даже «00» («*» будет соответствовать нулю или более единицам). Но строка «0» не будет сопоставлена, так как в строке есть только один ноль, а в приведенном выше шаблоне мы указали, что необходимо два нуля, один в начале и один в конце.

Q) Практические вопросы по якорям

# Anchors

###Description
Write a pattern that matches all the dictionary words that start with ‘A’

### Positive matches (should match all of these):
Avenger
Acute
Altruism

### Negative match (shouldn’t match any of these):
Bribe
10
Zenith

### Execution Time Limit
10 seconds
import re
import ast, sys
string = sys.stdin.read()

# regex pattern
pattern = '^A'

# check whether pattern is present in string or not
result = re.search(pattern, string, re.I)  

# evaluate result - don't change the following piece of code, it is used to evaluate your regex
if result != None:
    print(True)
else:
    print(False)
# Anchors

### Description
Write a pattern which matches a word that ends with ‘ing’. Words such as ‘playing’, ‘growing’, ‘raining’, etc. should match while words that don’t have ‘ing’ at the end shouldn’t match.

### Execution Time Limit
10 seconds
# 15_1

import re
import ast, sys
string = sys.stdin.read()

# regex pattern
pattern = 'ing$'

# check whether pattern is present in string or not
result = re.search(pattern, string)

# evaluate result - don't change the following piece of code, it is used to evaluate your regex
if result != None:
    print(True)
else:
    print(False)
# Anchors

### Description
Write a regular expression that matches any string that starts with one or more ‘1’s, followed by three or more ‘0’s, followed by any number of ones (zero or more), followed by ‘0’s (from one to seven), and then ends with either two or three ‘1’s.

### Execution Time Limit
15 seconds
import re
import ast, sys
string = sys.stdin.read()

# regex pattern
pattern = '^1+0{3,}1*0{1,7}1{2,3}$'

# check whether pattern is present in string or not
result = re.search(pattern, string)

# evaluate result - don't change the following piece of code, it is used to evaluate your regex
if result != None:
    print(True)
else:
    print(False)

Специальный символ в регулярных выражениях действует здесь как заполнитель и может буквально соответствовать любому символу в данной входной строке. Это символ «.» (точка), также называемый подстановочным знаком.

До сих пор мы упоминали точный символ, за которым следует квантификатор в ваших шаблонах регулярных выражений. Например, шаблон «ура{2,}у» соответствует словам «спешите», «спешите», «спешите» и т. д. Здесь буква «р» должна присутствовать 2 или более раз. Но мы не всегда можем знать букву, которую хотим повторить. В таких сценариях нам нужно вместо этого использовать подстановочный знак.

Подстановочный знак пригодится во многих ситуациях. За ним может следовать квантификатор, указывающий, что любой символ присутствует определенное количество раз.

Например, если мы хотим написать шаблон регулярного выражения, который соответствует строке, начинающейся с четырех символов, за которыми следуют три 0 и две единицы, за которыми следуют любые два символа. Допустимые строки: abcd00011ft, jkds00011hf и т. д. Шаблон, удовлетворяющий такому условию, будет ‘.{4}0{3}1{2}.{2}’. Вы также можете использовать «….00011..», где точка выступает в качестве заполнителя, что означает, что на месте точки может стоять что угодно. Оба являются правильными шаблонами регулярных выражений.

В) Практические вопросы по подстановочным знакам

# Wildcard

### Description
Write a regular expression to match password that has length between three and fifteen characters.

### Sample positive match:
Amandeep
Krishna

### Sample negative match:
Balasubrahmanyam

### Execution Time Limit
10 seconds
import re
import ast, sys
string = sys.stdin.read()

# regex pattern
pattern = '^.{3,15}$'

# check whether pattern is present in string or not
result = re.search(pattern, string)

# evaluate result - don't change the following piece of code, it is used to evaluate your regex
if result != None:
    print(True)
else:
    print(False)

Итак, вы узнали, как символ «.» может выступать в качестве заполнителя для любого символа и как его использовать. В следующем разделе вы узнаете о наборах символов.

Предыдущая часть серии