Как понять что текст соответствует примеру

Ну вот допустим, есть вот такая python строка: some(shit("Hello, ", "world!")). И как понять, что она соответствует такому примеру: some(shit("...", "...")). Вместо точек любые символы


Ответы (2 шт):

Автор решения: ganz

Для решения предлагаю модуль re:

re.findall(pattern,string)

где: pattern='some\(shit\([A-z]{1,5}\,\.*\)\)'

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

→ Ссылка
Автор решения: gil9red

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

some\(shit\("[^"]+", "[^"]+"\)\)

Как использовать (если вернулся объект re.Match, то шаблон соответствует, иначе None):

import re

pattern = re.compile(r'some\(shit\("[^"]+", "[^"]+"\)\)')

print(pattern.search('some(shit("Hello, ", "world!"))'))
print(pattern.search('some(shit("...", "..."))'))
print(pattern.search('some(shit("...", "...", "..."))'))
print(pattern.search('some(shit("..."))'))

Результат:

<re.Match object; span=(0, 31), match='some(shit("Hello, ", "world!"))'>
<re.Match object; span=(0, 24), match='some(shit("...", "..."))'>
None
None

PS.

Для получения True/False результат re.search оберните в bool:

print(bool(pattern.search('some(shit("..."))')))

Хотя можно и без этого в if помещать:

text = 'some(shit("..."))'
m = pattern.search(text)
if not m:
    # Логика если строка text не соответствует шаблону
→ Ссылка