Невозможно создать регулярное выражение для разных URL - PullRequest
2 голосов
/ 21 мая 2019

Я новичок в Jmeter и хочу создать регулярное выражение, которое может захватить оба URL ниже:

Я пытаюсь использовать это выражение:

movies/(.+?)/(.+?)&amp

Это не работает для обоихURL:

https://in.bookmyshow.com/bengaluru/movies/avengers-endgame/ET00090482&
https://in.bookmyshow.com/movies/the-tashkent-files/ET00069063/&

Ответы [ 4 ]

0 голосов
/ 28 мая 2019

Попробуйте приведенное ниже регулярное выражение и сообщите мне результаты.

фильмы /(.*?)&

enter image description here

enter image description hereenter image description here

0 голосов
/ 21 мая 2019

Я пока не могу комментировать, но хотел добавить к тому, что опубликовала Эмма.

После того, как вы настроите свои группировки так, как вы хотите, в JMeter есть поле для «Match Number».Если вы поставите

refName_n_g<group number>

, он должен вернуть нужную вам часть.Так что если название фильма в регулярном выражении - группа 2, вы бы поместили

refName_n_g2

Вот страница на JMeter и регулярное выражение:

Using-RegEx-Regular-Expression-Extractor-with-JMeter

Редактировать: используя

movies\/(.+?\/.+?)&amp

ваша группа 1 выдаст вам "мститель-эндшпиль / ET00090482"

0 голосов
/ 28 мая 2019

Ваше выражение: movies /(.+?)/(.+?)&

Поскольку вы ищете 2 группы: название фильма (avengers-endgame) и идентификатор (ET00090482), вам нужно взять шаблон как $ 1 $$ 2 $ в экстракторе регулярных выражений в JMeter

Также, пожалуйста, проверьте разделы - Применить к и Поля для проверки кбыть выбран в соответствии с требованием

enter image description here

Ссылка:

Как использовать экстрактор регулярных выражений в JMeter

0 голосов
/ 21 мая 2019

Я предполагаю, что мы могли бы передать домен и зафиксировать несколько компонентов URL-адресов, таких как идентификатор.Давайте начнем с выражения с большим количеством границ, затем удалим их, если они нежелательны:

(.+?)(in.bookmyshow.com)\/(.+?)\/([A-Z0-9]+)(.*&amp;)

enter image description here

DEMO

RegEx

Если это выражение не нужно, его можно изменить или изменить в regex101.com .

Схема RegEx

jex.im также помогает визуализировать выражения.

enter image description here

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

Этот фрагмент кода просто показывает, как работают группы захвата:

const regex = /(.+?)(in.bookmyshow.com)\/(.+?)\/([A-Z0-9]+)(.*&amp;)/gm;
const str = `https://in.bookmyshow.com/bengaluru/movies/avengers-endgame/ET00090482&amp;
https://in.bookmyshow.com/movies/the-tashkent-files/ET00069063/&amp;`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Если мы хотим передать URL-адреса, имеющие movies, и пропустить те, у которых их нет, мы можем добавить новую границу к нашему начальному выражению:

(.+?)(in.bookmyshow.com)\/(.+)?movies(.+)?\/([A-Z0-9]+)(.*&amp;) 

enter image description here

DEMO

const regex = /(.+?)(in.bookmyshow.com)\/(.+)?movies(.+)?\/([A-Z0-9]+)(.*&amp;)/gm;
const str = `https://in.bookmyshow.com/bengaluru/movies/avengers-endgame/ET00090482&amp;
https://in.bookmyshow.com/movies/the-tashkent-files/ET00069063/&amp;
https://in.bookmyshow.com/music/the-tashkent-files/ET00069063/&amp;
https://in.bookmyshow.com/bengaluru/music/the-tashkent-files/ET00069063/&amp;`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...