@abra-cadabra

Как правильно составить регулярку?

Здравствуйте.
Знатоки, нужна ваша помощь в составлении регулярки.
Есть строка, например:
value-1:test;2:test_2,test3
Нужно составить регулярку которая из строки уберет все и сделает результат такого вида: "test,test_2,test3".
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Решение без регулярных выражений:
function transform($str) {
    $prepared = str_replace(";", ",", $str);
    $elements = explode(",", $prepared);
    $transformedElements = array_map(function($element) {
        return strpos($element, ":") === false ? $element : explode(":", $element)[1];
    }, $elements);
    
    return implode(",", $transformedElements);
}

$str = "value-1:test;2:test_2,test3";
$transformed = transform($str);
var_dump($transformed);


Оно же, но короче и менее читабельно:
$str = "value-1:test;2:test_2,test3";
$transformed = implode(",",  array_map(function($element) {
    return strpos($element, ":") === false ? $element : explode(":", $element)[1];
}, explode(",", str_replace(";", ",", $str))));

var_dump($transformed);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
let str = "value-1:test;2:test_2,test3";
		let newStr = str.replace(/(.+?):([^;]+)/g, function() {
			if (arguments[3] === 0)
				return arguments[2]
			return ","+arguments[2];
		});
		console.log(newStr);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы