Мне нужно избавиться от ложных паренов.Вот пример предложения:
s = "trees 1) whatever ( goor brc ) the content ( and bad now."
Мне нужно удалить из него только первые )
и последние (
.
Мой код не работает, потому что я использую недопустимый синтаксис.Тем не менее, на некоторых языках было бы неплохо, вероятно:
re.sub("(?<=^.*?)\)|(?<=.*)\(", "", s)
Как это выполнить?
EDIT
Это регулярное выражение, вероятно, соответствует первому )
: (?:)\)
Это работает на regex101, но с s = re.sub("(?:\)){1}", "", s)
удаляет все )
.
Я нашел, может быть, не очень элегантное решение, но работает:
bos = [m.start() for m in re.finditer("\(", s)]
bcs = [m.start() for m in re.finditer("\)", s)]
if min(bcs) < min(bos):
s = s[:min(bcs)] + s[(min(bcs)+1):]
bos = [m.start() for m in re.finditer("\(", s)]
bcs = [m.start() for m in re.finditer("\)", s)]
if max(bos) > max(bcs):
s = s[:max(bos)] + s[(max(bos)+1):]