Я действительно не понимаю, что это за вещь в любом порядке, которая сделала бы регулярное выражение короче.С другой стороны, я могу показать вам, как сделать это читабельным, даже если у вас есть тонна вариантов.
import re
pattern = """
.* # match from starting the line
(?: # A non-capturing group starts so we can list lots of alternatives
abc| # alternative 1
acb # alternative 2
) # end of alternatives
.* # then match everything up to the end of the line
"""
re.search(pattern, 'qqabcqq', re.VERBOSE) # returns a match
re.search(pattern, 'qqacbqq', re.VERBOSE) # returns a match
re.search(pattern, 'qqaSDqq', re.VERBOSE) # does not return a match
Так что же мы только что увидели здесь?
""" ... """
Конструкция - это удобный способ определения многострочных строк в Python.
Затем re.VERBOSE
пропускает пробелы и комментарии.Как указано в , в руководстве указано: :
Пробелы в шаблоне игнорируются, за исключением случаев, когда они находятся в классе символов или перед ним стоит обратный слеш без экранирования.Если в строке содержится знак #, который не входит в класс символов и ему не предшествует обратная косая черта без экранирования, все символы от самого левого такого # до конца строки игнорируются.
Это две вещиПозвольте вам добавить структуру и комментарии к вашему регулярному выражению. Здесь - еще один замечательный пример.