Как понять что текст соответствует примеру
Ну вот допустим, есть вот такая python строка: some(shit("Hello, ", "world!")). И как понять, что она соответствует такому примеру: some(shit("...", "...")). Вместо точек любые символы
Ответы (2 шт):
Для решения предлагаю модуль re:
re.findall(pattern,string)
где: pattern='some\(shit\([A-z]{1,5}\,\.*\)\)'
В квадратных скобках указаны символы, которые могут встречаться, в фигурных их количество, обратный слеш нужен для экранирования специальных знаков
Для сопоставления можно использовать регулярные выражения, пример:
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 не соответствует шаблону