Как сделать питона регулярное выражение , как , "(.*)"
например , что при "a (b) c (d) e"
питон соответствует "b"
вместо "b) c (d"
?
Я знаю, что я могу использовать "[^)]"
вместо "."
, но я ищу более общее решение, которое держит мое регулярное выражение немного чище. Есть ли способ сказать Python "Эй, сопоставьте это как можно скорее"?
python
regex
regex-greedy
So8res
источник
источник
*?
?Согласно документам :
источник
Не будет
\\(.*?\\)
работать? Это не жадный синтаксис.источник
Как сказали другие, используя? Модификатор * quantifier решит вашу непосредственную проблему, но будьте осторожны, вы начинаете отклоняться в области, где регулярные выражения перестают работать, и вместо этого вам нужен анализатор. Например, строка "(foo (bar)) baz" вызовет у вас проблемы.
источник
Использование нечестного матча - хорошее начало, но я бы также посоветовал вам пересмотреть любое использование
.*
- как насчет этого?источник
Вы хотите, чтобы это соответствовало "(b)"? Делай, как предложили Цитракс и Паоло. Вы хотите, чтобы это соответствовало "b"? Делать
источник
Для начала я не предлагаю использовать "*" в регулярных выражениях. Да, я знаю, это наиболее используемый многосимвольный разделитель, но, тем не менее, это плохая идея. Это потому, что, хотя он соответствует любому количеству повторений для этого символа, «any» включает в себя 0, что обычно является причиной того, что вы хотите вызвать синтаксическую ошибку, а не принять. Вместо этого я предлагаю использовать
+
знак, который соответствует любому повторению длины> 1. Более того, из того, что я вижу, вы имеете дело с выражениями в скобках фиксированной длины. В результате вы, вероятно, можете использовать{x, y}
синтаксис, чтобы конкретно указать желаемую длину.Однако, если вам действительно нужно не жадное повторение, я советую обратиться ко всемогущим
?
. Это, после размещения после в конце любого спецификатора повторения регулярного выражения, заставит эту часть регулярного выражения найти наименьшее возможное количество текста.При этом я был бы очень осторожен с тем,
?
как оно, подобно звуковой отвертке в «Докторе Кто», имеет тенденцию делать, как бы это выразиться, «слегка» нежелательные вещи, если не будет тщательно откалиброван. Например, чтобы использовать ваш пример ввода, он идентифицирует((1)
(обратите внимание на отсутствие второго rparen) как совпадение.источник