PHP регулярное выражение между символами-разделителями

Я пытаюсь найти решение этой проблемы.
У меня есть такая строка&M26&M35.45 #&TN #&C150,250,10 # f54f # «и я хочу преобразовать его в массив, содержащий все совпадения между ‘&’ а также ‘#’. Так что в моем сценарии я хотел бы иметь

0: M35.45
1: TN
2: C150,250,10

Я пытался сделать это с помощью регулярного выражения

$haystack = "&M26&M35.45#&TN#&C150,250,10# f54f#";
if (preg_match_all("/(?<=&).*?(?=#)/s", $haystack, $result))
print_r($result[0]);

Но таким образом я получаю:

0: M26&M35.45
1: TN
2: C150,250,10

Если вы видите, первое совпадение содержит некоторые символы, которые мне не нужны.
Поэтому я пытаюсь найти кратчайшее совпадение между моими разделителями, но не знаю как. Спасибо!

1

Решение

Когда вы говорите «Мне не нужен этот персонаж» — вы должны исключить персонажа из вашего выбора. А именно, [^&], Ваше полученное регулярное выражение таково:

/(?<=&)[^&]*?(?=#)/s

Новый результат:

Array
(
[0] => M35.45
[1] => TN
[2] => C150,250,10
)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]