Question: I need to find specific strings in a file upto the line `AUTO HEADER`. I am not sure how to restrict the `regex` to find the matches only upto a specific line. Can someone help me figure that out?

This is my script:

```
import re
a = open("mod.txt", "r").read()
op = re.findall(r"type=(\w+)", a, re.MULTILINE)
print(op)

```

This is my input file mod.txt:

```
bla bla bla
header
module a
  (
 type=bye
 type=junk
 name=xyz type=getme
 type=new
  AUTO HEADER

type=dont_take_it
type=junk
type=new

```

Output:

```
['bye', 'junk', 'getme', 'new', 'dont_take_it', 'junk', 'new']

```

Expected output:

```
['bye', 'junk', 'getme', 'new']

```

In `regex`, I need to consider `AUTO HEADER` but not sure how exactly.

Answer: 
You can use Positive Lookahead in regex together with re.DOTALL

```
op = re.findall(r"type=(\w+)(?=.*AUTO HEADER)", a, re.DOTALL)
print(op)

['bye', 'junk', 'getme', 'new']

```

`(?=.*AUTO HEADER)` Positive Lookahead to ensure any matching texts **must be followed by** the text `AUTO HEADER` somewhere after. Effectively exclude those unwanted matches **after** the text `AUTO HEADER`

`re.DOTALL` to allow the regex engine to look across lines (so that `AUTO HEADER` can be looked ahead).
This may sound stupid but have you considered not supplying the full text to your Regex match but only the text up to your keyword?
Like no reason to not just seperate it quickly before, no?