나는이처럼 보이는 문자열에서 내용을 추출하려고 :부정 이전에 일치하는 단어 그룹
reg = re.compile(r'''
(?xi)
(\w\.\t*\s*)+ (?# e.g. A. or b.)
(.+) (?# the alphanumeric content with common symbols)
^(?:\1) (?# e.g. 'not A.' or 'not b.')
''')
m = reg.findall(s)
것은 내가 당신에게 줄 보자 : 여기
A.content content
content
B.content C. content content
content D.content
을 그리고 파이썬에서 내 정규식 패턴입니다 예. 나는 다음과 같은 문자열을 말해봐 :
s = '''
a. $1000 abcde!?
b. (December 31, 1993.)
c. 8/1/2013
d. $690 * 10% = 69 Blah blah
'''
나에게 정규식 그룹의 내용 반환 작동 다음 정규식 : 내용이 다른 라인에 이상 출혈하는 경우
reg = re.compile(r'''
(?xi)
\w\.\t*
([^\n]+) (?# anything not newline char)
''')
for c in reg.findall(s): print "line:", c
>>>line: $1000 abcde!?
>>>line: (December 31, 1993.)
>>>line: 8/1/2013
>>>line: $690 * 10% = 69 Blah blah
그러나을 , 정규식 은 작동하지 않습니다.
s = '''
a. $1000 abcde!? B. December
31, 1993 c. 8/1/2013 D. $690 * 10% =
69 Blah blah
'''
reg = re.compile(r'''
(?xi)
(\w\.\t*\s*)+ (?# e.g. A. or b.)
(.+) (?# the alphanumeric content with common symbols)
^(?:\1) (?# e.g. 'not A.' or 'not b.')
''')
for c in reg.findall(s): print "line:", C# no matches :(
>>> blank :(
내용을 구분하는 개행 문자가 있는지 여부와 관계없이 동일한 일치 항목을 얻고 싶습니다.
그런 이유로 나는 부정적 일치 단어 그룹을 사용하여 시도했습니다. 그럼 내가 정규식이나 다른 해결 방법 중 하나를 통해이 문제를 해결할 수있는 방법에 대한 아이디어?
감사합니다.
바울은
당신은 몇 가지 샘플을해야합니까 성냥/비 성냥? 당신이하려는 일을 알아내는 것은 약간 어렵습니다. – iamnotmaynard
예제와 결과를 제공하도록 내 질문을 업데이트했습니다. – Paul
이것은 여전히 매우 신비한 일입니다. 당신이 얻고 싶었던 것과 일치하는 것을 게시하고 실제로 얻은 것과 다른 점은 무엇입니까? –