[python] 괄호 사이에 텍스트를 반환하는 정규식

u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'

필요한 것은 괄호 안의 내용입니다.



답변

문제가 정말 간단하다면 정규식이 필요하지 않습니다.

s[s.find("(")+1:s.find(")")]


답변

사용 re.search(r'\((.*?)\)',s).group(1):

>>> import re
>>> s = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
>>> re.search(r'\((.*?)\)',s).group(1)
u"date='2/xc2/xb2',time='/case/test.png'"


답변

모든 항목을 찾으려면 :

>>> re.findall('\(.*?\)',s)
[u"(date='2/xc2/xb2',time='/case/test.png')", u'(eee)']

>>> re.findall('\((.*?)\)',s)
[u"date='2/xc2/xb2',time='/case/test.png'", u'eee']


답변

tkerwin의 답변을 기반으로, 다음 과 같이 중첩 된 괄호 가있는 경우

st = "sum((a+b)/(c+d))"

그의 대답은 당신이 사이에있는 모든 수행해야하는 경우 작동하지 않습니다 처음 여는 괄호마지막 닫는 괄호 얻기를 (a+b)/(c+d)에서 찾기 검색은 문자열의 왼쪽 있기 때문에, 첫 번째 닫는 괄호에서 멈출 것입니다.

이 문제를 해결하려면 rfind작업의 두 번째 부분에 사용해야 합니다.

st[st.find("(")+1:st.rfind(")")]


답변

import re

fancy = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'

print re.compile( "\((.*)\)" ).search( fancy ).group( 1 )


답변

contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
    print(contents_re.groupdict()['contents'])


답변