Найти соответствие между первыми вертикальными чертами (|) - PullRequest
0 голосов
/ 30 сентября 2019

В Google Analytics я хочу с помощью регулярных выражений отфильтровать все URL-адреса, где первое вхождение между вертикальными полосами / полосами равно 1 = | 1 |.

Я искал похожий вопрос по stackoverflow и провел несколько тестов в регулярном выражениитестер. Но не тот результат, который я хотел.

Я проверял, но он не проверяет первое значение между первыми вертикальными столбцами.

\|([1]{1})\|

INPUT

https://www.website.be/results-?e=elec&Form=Home&i2=3-N-H4.225.4|1|2-Y-------Y-----1-1|1|1|1-||||0!A!A!n|0!A!A|||||||undefined!undefined-4|13-0
https://www.website.be/results-?e=elec&Form=Home&i2=3-N-H4.225.4|2|2-Y-------Y-----1-1|2|1|1-||||0!A!A!n|0!A!A|||||||undefined!undefined-4|13-0
https://www.website.be/results-?e=elec&Form=Home&i2=3-N-H4.225.4|abc|2-Y-------Y-----1-1|2|1|1-||||0!A!A!n|0!A!A|||||||undefined!undefined-4|13-0

РезультатЯ хочу

https://www.website.be/results-?e=elec&Form=Home&i2=3-N-H4.225.4|1|2-Y-------Y-----1-1|1|1|1-||||0!A!A!n|0!A!A|||||||undefined!undefined-4|13-0

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Может быть достаточно следующего регулярного выражения:

^[^|]*\|1\|.*$

Демонстрация

Это будет соответствовать всем строкам, где находится второй компонент с разделителями каналов. имеет только номер 1. Если вы также хотите заявить что-то более конкретное, например, что есть ровно 19 компонентов, то мы можем попытаться расширить шаблон?:

^[^|]*\|1\|(?:[^|]*\|){16}[^|]*$

Демо

0 голосов
/ 30 сентября 2019
result = inputs.filter(string => {
    let i = string.indexOf("|");
    return string.charAt(i+1) == "1" && string.charAt(i+2) == "|"
});
...