in reply to regular expression for getting text between 1. and 2.
I see two options:
Either use anchors /^1[).](.*?)2[).]$/
or use a greedy match /1[).](.*)2[).]/
btw. In the character class you don't need the pipe for an or. Your regex would also match 1| some text 2|
hope this helps