RegEx для замены конкретного слова и номера шаблона - PullRequest
1 голос
/ 13 мая 2019

Я ищу способ найти и удалить подстроку из строки на основе * определенного слова , за которым следует число * шаблон.

Например:

string = "These are 02 examples"
# Expected output : These examples

string = "Below are 2 examples"
# Expected output : Below examples

string = "Above are 05 examples"
# Expected output : Above examples

В программе, в которой я буду использовать это, слово 'are' будет оставаться статическим во всех случаях, только число после его изменения.Спасибо.

Ответы [ 3 ]

1 голос
/ 13 мая 2019

Вы можете использовать re.sub , чтобы найти число с 1 или более цифрами после are с одним или несколькими пробелами между ними через регулярное выражение \s+are\s+\d+ и заменить его на are, следующее регулярное выражение также заботится о пробелах вокруг are в оригинальном слове!

Также стоит отметить, что вы можете предварительно скомпилировать регулярное выражение, используя re.compile

import re

def change(s):

    pattern = re.compile('\s+are\s+\d+')
    return re.sub(pattern, ' are', s)

print(change("These are 02 examples"))
print(change("These are 2 examples"))
print(change("These are 05 examples"))
print(change("These are  05 examples"))
print(change("These are         05 examples  are 045 examples"))

Выход будет

These are examples
These are examples
These are examples
These are examples
These are examples are examples
1 голос
/ 13 мая 2019

Чтобы понять, как писать регулярные выражения, вы должны взглянуть на веб-сайт, подобный regexr , который предоставляет чит-листы и множество инструментов для изучения.

Тогда вы будете использовать метод sub: https://docs.python.org/3.7/library/re.html#re.sub

Регулярное выражение, которое вы ищете здесь:

s2 = re.sub(r" are \d+", "", mystr)

Обновление : или, если вы хотите сделать это быстрее, скомпилируйте регулярное выражение до:

rx = re.compile(r" are \d+")
s2 = rx.sub("", mystr)
0 голосов
/ 13 мая 2019

вы можете использовать регулярное выражение:

import re

text = """
These are 02 examples
Below are 2 examples
Above are 05 examples
"""

v = re.sub(r'are \d+', '', text)
print(v)

вывод:

These  examples
Below  examples
Above  examples
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...