Полностью случайное предположение, но использовали ли вы его в split
?
В javascript (я не так уверен в PHP), если я наберу это:
"matchabc".split(/^match/)
Я получаю:
["", "abc"]
Обратите внимание, что split использует совпадение для разделения строки, поэтому вы получаете фрагменты, которые не совпадают.
Однако, если я сделаю это:
"matchabc".split(/^(match)/)
Я получаю:
["", "match", "abc"]
Это потому, что скобки фиксируют то, на что я делюсь. Это немного похоже на поведение, которое вы описываете - было бы легче сказать, если вы опубликуете пример, иллюстрирующий проблему (не только регулярное выражение, но как вы используете его и строку, на которую он действует).