RegEx для сопоставления IP-адресов в определенном формате - PullRequest
2 голосов
/ 15 мая 2019

У меня есть эта строка:

OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60

Как я могу получить только src = (ipaddress) и просто получить ipaddress?

Попытка:

SRC=(.+)(\d+)(.+?(?=DST))

Ответы [ 4 ]

1 голос
/ 15 мая 2019

Вы можете использовать это регулярное выражение и извлечь IP из группы 1.

SRC\s*=\s*(\d{1,3}(?:\.\d{1,3}){3})

Обратите внимание, что это регулярное выражение также уменьшает количество пробелов между SRC, = и IP, используя \s* вРегулярное выражение и включение нечувствительного к регистру совпадения также помогут сопоставить src.

Regex Demo

Демонстрация кода JS,

const s = 'OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.85 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.86 DST = 192.168.1.20 LEN = 60'
const reg = /SRC\s*=\s*(\d{1,3}(?:\.\d{1,3}){3})/ig

while((m = reg.exec(s))) {
    console.log(m[1])
}
1 голос
/ 15 мая 2019

Вы можете использовать положительное выражение с регулярным выражением, например:

(?<=SRC = )\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

regex101 пример: https://regex101.com/r/cuAUm3/1/

код JavaScript:

const regex = /(?<=SRC = )\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/gm;
const str = `OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60`;

console.log(str.match(regex));

РЕЗУЛЬТАТ:

Array(3)
0: "222.187.221.84"
1: "222.187.221.84"
2: "222.187.221.84"
0 голосов
/ 15 мая 2019

Как и предлагали другие ответы: вы можете использовать что-то вроде:

var regex= /SRC = (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g;

ИЛИ:

var regex= /SRC\s*=\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g;

Захват в скобках группы, которую вы пытаетесь сопоставить:

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})

Затем вы можете продолжить выполнение регулярного выражения для всех совпадений в вашей строке.

var txt= "OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60";
var regex= /SRC\s*=\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g;

var match = regex.exec(txt);
while (match != null) {
    console.log(match[1]);
    match = regex.exec(txt);
}
0 голосов
/ 15 мая 2019

Это должно дать вам IP

var ipReg = /SRC = (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;

var str = 'br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60 OUT = br0 SRC = 222.187.221.84 DST = 192.168.1.20 LEN = 60';

var ip = str.match(ipReg)[1];

console.log(ip)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...