#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "\b(?<=[A-Z]{2} [–-] ).*?\b[Cc]hapter\b"
Local $sString = "Match unknown number of words that lies between two known patterns" & @CRLF & _
"" & @CRLF & _
"I'm looking to make a regex for use in LibreOffice Writer's "Find and Replace" function. LibreOffice version 25.8.4.2. " & @CRLF & _
"" & @CRLF & _
"The text I want to search looks like the following." & @CRLF & _
"" & @CRLF & _
"008 – San Terremoto CA | 010 - Eastern AK – Joe Jolson Chapter | 011 - Doughtown NY | 012 - Copperville AZ | 014 - Gatorville FL | 015 - Swamptown FL | 018 - District of Columbia (DC) | 019 - Central PA | 041 – Stoddard Mill MA - Cpl Mike G. Paulson Chapter |139 - North Pacific Bay WA |" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"1. Most of the records end with " & @CRLF & _
"" & @CRLF & _
"a two-letter U.S. state abbreviation, a space, and a pipe. " & @CRLF & _
"" & @CRLF & _
"2. A number of records end with" & @CRLF & _
"" & @CRLF & _
"a two-letter U.S. state abbreviation, a space, a hyphen, a space, unknown number of words separated by spaces, final space, the word "chapter", space, pipe." & @CRLF & _
"" & @CRLF & _
""Chapter" may or may not be capitalized." & @CRLF & _
"" & @CRLF & _
"In records which match the description in "2." above, I want to match any text which follows the two-letter state abbreviation with a name and the word "chapter". Examples of that text is in boldface type above." & @CRLF & _
"" & @CRLF & _
"I tried a number of things, lastly this:" & @CRLF & _
"" & @CRLF & _
"(?<=\[A-Z\]{2})\\s-\\s\[\\w\]+\\s\[Chapter|chapter\]" & @CRLF & _
"" & @CRLF & _
"and" & @CRLF & _
"" & @CRLF & _
"(?<=\[A-Z\]{2})\\s-\\s\[a-zA-Z\]+\\s\[Chapter|chapter\]" & @CRLF & _
"" & @CRLF & _
"It has not yet worked." & @CRLF & _
"" & @CRLF & _
"I welcome suggestions. Thank you"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm