Например, я определяю "ключевое слово foo рядом с началом строки" как это регулярное выражение:
(?<=^.{,10})foo
И я определяю «короткую строку» как это регулярное выражение (или, что то же самое, 30 символов или меньше):
^(?=.{,30}$)
Теперь вопрос в том, что я хочу сопоставить «ключевое слово foo около начала короткой строки» с одним единственным регулярным выражением, но не уверен, как это сделать. Соответствующий текст должен быть "foo", поэтому предполагается, что окружающий текст будет обрабатываться должным образом (с поиском обходных путей).
Это то, что я пробовал, и оно, очевидно, не работает:
^(?=.{0,30)$)(?<=^.{,10})foo
Этот работает, но соответствует слишком большому количеству текста, я хочу только foo , а не aafoo :
^(?=.{0,30)$).{,10}foo
Ожидаемые входы и выходы:
aaaaaaaaaaa => None
aafooaaaaaa => "foo" (at position 2-5)
aaaaaaaaaaafoo => None (Too far from start of string)
aafooaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa => None (String too long)
Я использую сторонний пакет PyPI regex
(не встроенный re
) на Python 3.