Here's a method to parse the string by using a second delimited string of the keywords themselves used as the delimiting values. The strings are split using the DelimitedSplit8K function.
DECLARE
@s-2 VARCHAR(MAX)
,@Split CHAR(1)
,@KeyWords VARCHAR(50)
SET @Split = ' '
SELECT
@s-2 = 'Collapsed Statue: Matured Life # 007812 between BOKSAM KAND LAMOG and Bill APPER SRIM (Goper)'
,@KeyWords = 'between,and,(Goper)'
--other variations for testing
--@S = 'Collapsed Statue: XXXX YYYYY Matured Life # 007812 between BOKSAM KAND LAMOG and Bill APPER SRIM (Goper)'
--,@KeyWords = 'Statue:,between,and,(Goper)'
--@S = 'Collapsed Statue: Matured Life # 007812 between BOKSAM KAND LAMOG and Bill APPER SRIM (Goper) XXXX YYYYY'
--@S = 'Collapsed Statue: Matured Life # 007812 between BOKSAM ZZZZZ KAND LAMOG and Bill YYY APPER SRIM (Goper) XXXX YYYYY'
--,@KeyWords = 'Collapsed,YYYYY'
--,@KeyWords = '#,and,(Goper)'
IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL
DROP TABLE #TempTable
CREATE TABLE #TempTable (
[n1] INT NOT NULL,
[i1] VARCHAR(50) NULL,
[n2] INT NULL,
[i2] VARCHAR(50) NULL,
PRIMARY KEY (n1))
INSERT INTO #TempTable
SELECT
dsk1.ItemNumber AS n1
,dsk1.Item AS i1
,dsk2.ItemNumber AS n2
,dsk2.Item AS i2
FROM
dbo.tvfDelimitedSplit8K(@S,' ') AS dsk1
LEFT OUTER JOIN
(
SELECT
Item
,ItemNumber
FROM
dbo.tvfDelimitedSplit8K(@KeyWords,',')
) AS dsk2
ON dsk1.Item = dsk2.Item
SELECT
t1.i1 AS item
FROM
#TempTable AS t1
INNER JOIN
#TempTable AS t2
ON t2.n1 = (SELECT n1 FROM #TempTable WHERE n1 > 0 GROUP BY n1 HAVING MIN(n2)=1)
INNER JOIN
#TempTable AS t3
ON t3.n1 = (SELECT n1 FROM #TempTable WHERE n1 > 0 GROUP BY n1 HAVING MAX(n2)=(SELECT COUNT(n2) FROM #TempTable))
WHERE
t1.n1 > t2.n1
AND t1.n1 < t3.n1
AND t1.n2 IS NULL