Как игнорировать abc и def, 01 в выражении ниже, используя регулярное выражение. Я пробовал игнорировать меня, это не работает.Как построить это регулярное выражение?
Abc-DEF-SMDP-01
Как игнорировать abc и def, 01 в выражении ниже, используя регулярное выражение. Я пробовал игнорировать меня, это не работает.Как построить это регулярное выражение?
Abc-DEF-SMDP-01
Один путь, чтобы разбить исходную строку в префикс части интерес, и суффикс, удаление нежелательных charcters в аффиксах после этого:
$raw = "abc-def-smdp-01";
preg_match ("/^(.*)(-smdp-)(.*)$/", $raw, $matches); // separate original string into prefix, trunk, suffix
$matches[1] = preg_replace ("/[^-]/", "", $matches[1]); // non-'-' characters deleted in prefix
$matches[3] = preg_replace ("/[^-]/", "", $matches[3]); // non-'-' characters deleted in suffixfix
$result = $matches[1].$matches[2].$matches[3]; // composing target string
echo $result;
Демо-версия онлайн here.
NB
Проблемы, подобные этому можно легко решать со знанием функции PHP библиотеки, чьи doc within the online php manual поставляется с EXAKT синтаксиса, примеры кода и комментариями пользователей.
В этом случае обратите внимание на:
Конечно, найти подходящих кандидатов для предполагаемой функциональности предполагает по меньшей мере, небрежное понимание имеющихся средств, что делает 15 минут просмотра hierarchical index разумная инвестиция времени
вы можете мне сказать это с помощью Regex не в PHP – chethan
Какова ваша среда программирования? И почему вы помечаете свой вопрос 'preg_match', если это не php? – collapsar
Уточнение моего предыдущего комментария: Pure regexen используются для _match text patterns_ - однако вы также хотите _modify_ найти, который требует знания того, какая среда программирования используется. – collapsar
Я хотел бы использовать эту модель:
preg_match("/\w+\-\w+\-(\w+)\-\d+/", "Abc-def-smdp-01", $output);
Echo $output[1];
http://www.phpliveregex.com/p/ftB
EDIT: или вы нуждаетесь в тире?
В этом случае вы должны использовать этот шаблон: "/\w+(\-)\w+(\-)(\w+)(\-)\d+/"
А потом выводить его как:
echo $output[1].$output[2].$output[3].$output[4];
или петли его и построить строку с .=
Пожалуйста, прочтите [Как создать Minimal, полный и Подтверждаемый пример] (http://stackoverflow.com/help/mcve). Затем вернитесь и соответствующим образом отредактируйте свой вопрос. – Jan