0
    s="""04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: jockey
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 82
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: Donald
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 83
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 [STACK]( 1653): Not doing anything
    04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: Mickey
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 84
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS
    04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: Donald
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 83
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS
    04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: jockey
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 82
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS"""

    exepat= re.compile(".*Sending request.*?Donald.*?TO BE SENT IS",re.DOTALL)

    reout = exepat.findall(s)

    print reout[0]

Expected Output:
    04-09 11:11:57.879 D/PTT [STACK]( 1653): *********Sending request
    04-09 11:11:57.879 [STACK]( 1653): *********
    04-09 11:11:57.879 [STACK]( 1653): S: abcd 
    04-09 11:11:57.879 [STACK]( 1653): l: Donald
    04-09 11:11:57.879 [STACK]( 1653): k: sucess
    04-09 11:11:57.879 [STACK]( 1653): j: 83
    04-09 11:11:57.879 [STACK]( 1653): 
    04-09 11:11:57.879 [STACK]( 1653): MESSAGE TO BE SENT IS

I need a pattern to extract requests which have "Donald" in between "Sending request" and "MESSAGE TO BE SENT IS".In the above example two requests contains "Donald".So reout list should have 2 items.

0

2 Answers 2

1

Put parentheses around the part of the match you want to find:

exepat= re.compile(".*Sending request(.*)TO BE SENT IS", re.DOTALL)

for reout in exepat.findall(s):
    print(reout)

yields

04-09 11:11:57.879 [STACK]( 1653): *********
04-09 11:11:57.879 [STACK]( 1653): S: abcd 
04-09 11:11:57.879 [STACK]( 1653): l: jockey
04-09 11:11:57.879 [STACK]( 1653): k: sucess
04-09 11:11:57.879 [STACK]( 1653): j: 84
04-09 11:11:57.879 [STACK]( 1653): 
04-09 11:11:57.879 [STACK]( 1653): 
04-09 11:11:57.879 [STACK]( 1653): MESSAGE 

Without parentheses (defining a group), findall is just returning the whole string because the whole string matches the pattern.

The docs explain:

Return all non-overlapping matches of pattern in string, as a list of strings. The string is scanned left-to-right, and matches are returned in the order found. If one or more groups are present in the pattern, return a list of groups.

Sign up to request clarification or add additional context in comments.

Comments

0

Since you need the last occurrence:

.+Sending request(.+)TO BE SENT IS.*?$ 

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.