иметь данные excel и формулы, такие как:
- (S10+S14+S18+S22+S26+S30+S34)
- E10+E11+СУММ(E10;E14:E17)*E18-ЕСЛИ(E19‹1,E20, E21)
- СУММ(E14:E19)
- S16*S15
и так далее.
Я хочу получить все ссылки на ячейки из строк. Как в этом примере: "E10+E11+СУММ(E10;E14:E17)*E18-IF(E19‹1,E20, E21)"
Мне нужна выходная подстрока типа "E10 E11 ... E21" или разделенная знаком ",".
Я много тестировал с регулярным выражением, но не могу получить правильный результат. Я использую этот код:
String formulaString = "E10+E11+SUM(E10;E14:E17)*E18-IF(E19<1,E20, E21)";
Pattern pattern = Pattern.compile("REGEX");
Matcher matcher = pattern.matcher(formulaString);
Я пробовал следующее регулярное выражение:
REGEX: (\w+|)?\$?(?:\bXF[AD]|X[A-E][AZ]|[A-W][AZ]{2}|[AZ]{2}|[AZ])\ $?(?:104857[0–6]|10485[0–6]\d|1048[0–4]\d{2}|104[0–7]\d{3}|10[0–3] ]\d{4}|[1-9]\d{1,5}|[1-9])d?\b(:\s?\$?(?:\bXF[A-D]|X[A-E ][A-Z]|[A-W][A-Z]{2}|[A-Z]{2}|[A-Z])\$?(?:104857[0-6]|10485[0-6]\d|1048[ 0-4]\d{2}|104[0-7]\d{3}|10[0-3]\d{4}|[1-9]\d{1,5}|[1- 9])г?\б)?
REGEX: \$?\b([A-Z]|[A-H][A-Z]|I[AV])\$?([1-9]\d{0,3}|[1-5]\d{4 }|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-6])\b([:\s] \$?\b([A-Z]|[A-H][A-Z]|I[A-V])\$?([1-9]\d{0,3}|[1-5]\d{4}| 6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-6])\b)?
Для некоторых формул они работают, но не для всех.
Я надеюсь, что кто-нибудь может мне помочь или дать мне совет :)