Я пытаюсь получить отдельные символы из строки, находящейся в списке.
В настоящее время используется шаблон /^[!~]{0,2}/gm
, который соответствует первым двум символам, однако, если один и тот же символ появляется дважды встрока, она будет принимать повторяющийся символ вместо поиска другого символа, который появляется в списке. Если !!!~~~test
пройдено, совпадение должно быть !~
.
Код ниже, кажется, работает, однако я бы предпочел 100% -ное решение регулярных выражений.
$pattern = '/^[!~]{0,2}/';
$matches = [];
$operator = '=';
$value = $origValue;
preg_match($pattern, $origValue, $matches);
$matches = array_filter($matches);
if (count($matches) > 0) {
$matchesValue = array_shift($matches);
$matchArr = str_split($matchesValue);
$matchArr = array_unique($matchArr);
$matchesValue = implode('', $matchArr);
...
}
Обновление: пожалуйстасм. https://regex101.com/r/6lMtfJ/2. Я пытаюсь выбрать либо !
, либо ~
один раз в начале строки. Если один и тот же символ появляется более одного раза, он должен игнорировать дубликат и переходить к следующему символу. Больше примеров:
!test -> !
!!test -> !
!~test -> !~
!~~test -> !~
test! -> no match
test~~~ -> no match
Есть предложения?