Я пытаюсь найти решение этой проблемы.
У меня есть такая строка&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
Если вы видите, первое совпадение содержит некоторые символы, которые мне не нужны.
Поэтому я пытаюсь найти кратчайшее совпадение между моими разделителями, но не знаю как. Спасибо!
Когда вы говорите «Мне не нужен этот персонаж» — вы должны исключить персонажа из вашего выбора. А именно, [^&]
, Ваше полученное регулярное выражение таково:
/(?<=&)[^&]*?(?=#)/s
Новый результат:
Array
(
[0] => M35.45
[1] => TN
[2] => C150,250,10
)
Других решений пока нет …