正则expression式,附加一个查找string

我正在尝试将图表名称添加到没有工作表名称的Excel公式中的单元格。 例如curr_sheet上的一个公式:
'other_sheet'!$ B $ 2 + A1
应该成为:
'other_sheet'!$ B $ 2 +'curr_sheet'!A1

public static Void addSheetNameToCells(String formula, String sheetName) { String noSheetNameBeforeCellRegex = "('[A-Za-z0-9-_]+'!)?[$]?[AZ]{1,3}[$]?[0-9]+"; System.out.println("qwerty-"+formula.replaceAll (noSheetNameBeforeCellRegex, "'"+sheetNmame+"'!$0")); } 

上面的代码给了我:
'curr_sheet'! 'other_sheet'!$ B $ 2 +'curr_sheet'!A1
我认为解决scheme是在回溯,我试过(?<!('!))[$]?[AZ]{1,3}[$]?[0-9]+但它与$符号冲突* * $ ** B $ 2给我这个:
'other_sheet'!$'curr_sheet'!B $ 2 +'curr_sheet'!A1
有针对这个的解决方法吗?

(?<!'!)((?<![AZ])[AZ]{1,3}[0-9]+|\$[AZ]{1,3}\$[0-9]+)

以下expression式将匹配格式为A1或$ A $ 1的单元格,而不是以“

 (?<!'!)([AZ]{1,3}[0-9]+|\$[AZ]{1,3}\$[0-9]+) 

http://regex101.com/r/yO8rW1/2