Thanks Gordon
Had a look at what you suggested and could definitely see the OR's (pipe characters), but simply removing them wasn't going to cut it (I found that on our system the regex was duplicating the terms multiple times - not sure if that's expected).
Regardless, what I settled on was creating the regex from the query itself rather than trying to massage what was already there. Also needed to add logic so it only used the 'AND'-ing version if there were actually double-quotes. End result was this (for those interested):
if (transaction.question.query.length() > transaction.question.query.replace('"','').length()) {
transaction.response.resultPacket.queryHighlightRegex = "(i?)\\b" + transaction.question.query.replace('"','').replaceAll(" ", "\\\\b\\\\s\\\\b") + "\\b";
}
Seems to be working ok. Am currently getting it tested/reviewed.