I am trying to identify road names within a string for span tagging. There can be more than one road name within the string but often there is only one.
For most of the roads the format is something like
"flat 14, 24-34 barrington street, London"
"23 the honourable lord barrington's street, London"
"23 the honourable lord barrington's street, 42 the dishonarable baron lordington's street, London"
These are easily captured using basic regex of the form (?<=\s)([a-z'\s])+(street)
or ([a-z']+(\s)?)+(street)(?=,)
However sometimes an address will have the form
"land to the south of barrington street, London"
"plot 12 on barrington street, London"
There are a few key words that are almost always used in this situation the words are 'at', 'on', 'in','adjoining'.
I would like to make a regex that can match multiple words followed by 'street' but will not match any of the key words or the words that come before it in the sentence. In other words will extract the street name but not "plot 12 on".
I have attempted to use negative lookbehind but have not been successful in making it work. I have seen this answer but it doesn't seem appropriate for my use.