У меня проблема с одним выражением регулярного выражения, поэтому входная строка выглядит как
hello world and me or you
и я хотел бы сопоставить все от привет до ближайшего / ближайшего из шумных слов: and,or
до сих пор я придумал что-то вроде этого:
preg_match_all("/^hello[A-Z0-9 -]*(or|and)/is",$string,$match);
но проблема в том, что он вернется:
hello world and me or
вместо hello world and
, поскольку or
является первым в
(or|and)
список.
Было бы очень признательно, если бы кто-нибудь мог сказать мне, есть ли возможность сообщить движку регулярных выражений, чтобы он проверял, какой из них ближе или ближе к списку токенов ИЛИ для сопоставления, и использовал этот вместо проверки порядка, как указано, то есть * 1020. * в этом случае и следует использовать его ближе к исходному шаблону.
P.S.
изменение порядка внутри (or|and)
не является решением, так как есть больше слов, и вы никогда не знаете, какое из них ближе, поэтому это нужно сделать на алгоритмическом уровне.
большое спасибо за ваши советы.