Страницы: 1
RSS
PQ регулярным выражением получить два соответствия
 
здравствуйте. нашел пару вариантов использования RegIx в Power Query. крутил, вертел, пробовал и не получил нужный результат. хотелось бы получить легкий вариант работы функции, в которой задействован метод использования регулярного выражения. то есть в пользовательском столбце вызвал функцию, указал параметры(столбец, номер соответствия) и в новом столбце получил результат. надеюсь описал понятно. возможно ли сделать такую функцию?
забыл сказать. желательно паттерн использовать из ячейки умной таблицы. на скрине есть ожидаемый результат.
 
Доброе время суток.
А вы уверены, что этот шаблон ([0-1]\d|2[0-3]):[0-5]\d сможет вычленить 05:00?
Туплю, приношу свои извинения.
Изменено: Андрей VG - 14.03.2019 11:25:05
 
Цитата
artyrH написал:
нашел пару вариантов использования RegIx в Power Query
Весьма остроумно, спасибо.
 
artyrH, насчёт RegExp не подскажу, но конкретно эту задачу вполне можно решить штатными средствами PQ:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    list = Table.AddColumn(Source, "times", each List.RemoveItems(Text.SplitAny([Столбец1], Text.Remove([Столбец1],{"0".."9",":"})), {""})),
    final = Table.TransformColumns(list, {"times", each Text.Combine(List.Select(_, each try Value.Type(Time.From(_)) = Time.Type otherwise false), "; ")})
in
    final

 
Версия регулярными (как лупить из пушки по воробьям :) )
Код
let
    getTimeList = (inText) =>
    let
script =
"<script>
var str = '$text';
var regEx = /(?:[0-1]\d|2[0-3])\:[0-5]\d/g;
var nextTime, times = [];
while ((nextTime = regEx.exec(str)) != null) {
    times.push('""' + nextTime[0] +'""');
};
document.write('{' + times.join(',') + '}');
</script>",
        web = Web.Page(Text.Replace(script, "$text", inText))
    in
        web{0}[Data]{0}[Children]{1}[Children]{0}[Text],
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    timeList = Table.AddColumn(Source, "times", (rec) => List.Transform(Expression.Evaluate(getTimeList(rec[Столбец1])), each Time.From(_)) )
in
    timeList
 
Цитата
Андрей VG написал:
из пушки по воробьям
и правду. не для того Power query придумали чтоб в строках искать шаблонные выражения
Aleksei_Zhigulin,  Андрей VG,  спасибо за варианты  
Страницы: 1
Наверх