как написать регулярное выражение, которое удаляет такие шаблоны, как: "(())" в последовательности скобок - PullRequest
0 голосов
/ 07 августа 2020

Я хочу написать регулярное выражение в python, которое находит такие строки, как: (), () (), (()), () (()), (((()))) ... и замените их пустой строкой. ввод - это только последовательность скобок. открывающая и закрывающая скобки должны быть равны, но не похожи на) (. ((), (,), () ((, ())) не принимаются.

input : "()(())(("  
output : "(( "

input :
"()()"  
output :
""

input :
"((()))"  
output :
""

input :
"(("  
output :
"(("

input :
")()("  
output : 
")("

Я написал этот код, но он может найти только определенное c количество скобок:

a = re.sub("(\(){2}(\)){2}", "", a)

одно решение - найти один «()» и поместить его через некоторое время l oop вот так:

a = input()
le = len(a)
while True :
    a = re.sub("\(\)", "", a)
    if len(a)==le :
        break
    else :
        le = len(a)
 print(a)

Я хочу знать, есть ли лучшее решение?

1 Ответ

0 голосов
/ 07 августа 2020

Самый простой вы получите:

s = "()(())(("

while '()' in s:
    s = s.replace('()', '')
    
print(s)
# ((
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...