Я использую регулярные выражения в python для извлечения элементов данных из текстового файла. Я сталкиваюсь с проблемой захвата слишком большого числа наборов круглых скобок.Регулярные выражения, соответствующие слишком многим наборам круглых скобок
Текст хранится в виде строки с именем температуры и имеет вид:
temp='Somethingorother School District (additional text)|other stuff here'
настоящее время я использую
match = re.search(r'(.* School District) (\(.*\))\|?',temp)
который прекрасно работает и соответствует
match.group(1) = Somethingorother School District
match.group(2) = (additional text)
Однако , иногда часть «другой материал здесь» также содержит круглые скобки, например:
'Somethingorother School District (additional text)|$59900000 (4.7 mills)'
так что я получаю
match.group(2) = (additional text)|$59900000 (4.7 mills)
Я понимаю, что это происходит потому, что оператор * жаден, но (дополнительный текст) часть довольно своеобразная, и я хочу, чтобы захватить все, что в этих скобках. Другими словами, я хочу, чтобы это было жадным в этих круглых скобках, но затем перестаньте смотреть, как только это соответствует а). Есть ли способ сделать это?
Лучший способ заменить '. *' На '[^)] *', который будет соответствовать чему-либо, кроме закрытия ')', и поэтому сделает его прекрасным совпадением, когда вы встретите первый ')' – Tensibai