fork download
  1. <?php
  2.  
  3. $formulas = [
  4. 'SI(F5="";"";"Z_PACK_TYPE")',
  5. 'MARKET!A5',
  6. 'MARKET!MQ5',
  7. 'MARKET!AB5',
  8. 'MARKET!TX5',
  9. 'MARKET!SX5',
  10. 'MATMAS05!CZ5="3200";MARKET!DA5',
  11. 'SI(MATMAS05!CZ5="3200";MATMAS05!CZ5="3200";MARKET!DA5;"")',
  12. 'SI(L5="";"";"STRING")',
  13. 'SI(MATMAS05!CZ5="3300";MARKET!DA5;"")',
  14. 'SI(ESTVIDE(MARKET!EG5);"";SI(MATMAS05!CZ5="3200";MARKET!EG5;""))',
  15. ];
  16.  
  17. $regex = '/(?:(?<!")(?:"")*"[^"]*(?:""[^"]*)*"|\w+!)(*SKIP)(*F)|\b[A-Z]+\K\d+\b/';
  18.  
  19. foreach ($formulas as $formula) {
  20. preg_match_all($regex, $formula, $matches);
  21. print_r($matches);
  22. }
Success #stdin #stdout 0.04s 25728KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
            [1] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
            [1] => 5
            [2] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
            [1] => 5
        )

)
Array
(
    [0] => Array
        (
            [0] => 5
            [1] => 5
            [2] => 5
        )

)