2
votes

RegEx pour faire correspondre les adresses IP dans un format spécifique

J'ai cette ligne:

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

Comment puis-je obtenir uniquement src = (ipaddress) et obtenir simplement l'adresse ip?

Tentative:

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


2 commentaires

Veuillez modifier votre question pour inclure le code que vous avez écrit jusqu'à présent.


Ou une autre regex: / SRC = ((?: \ D {1,3} \.? \ b) {4}) / g


4 Réponses :


1
votes

Vous pouvez utiliser une expression régulière lookbehind positive, comme ceci:

(?

Exemple de regex101: https://regex101.com/r/cuAUm3/1/

code javascript:

Array(3)
0: "222.187.221.84"
1: "222.187.221.84"
2: "222.187.221.84"

RESULT:

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));


0 commentaires

0
votes

Cela devrait vous donner l'adresse 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)


0 commentaires

1
votes

Vous pouvez utiliser cette expression régulière et extraire l'IP du groupe 1.

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])
}

Notez que cette expression régulière assouplit également la quantité d'espaces présents entre SRC , = et IP en utilisant \ s * dans l'expression régulière et en activant la correspondance insensible à la casse aidera également à faire correspondre src .

Démo Regex

Démo du code JS,

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


0 commentaires

0
votes

Comme d'autres réponses l'ont suggéré: vous pouvez utiliser quelque chose comme:

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);
}

OU:

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

Capturer entre parenthèses le groupe que vous êtes essayer de faire correspondre:

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

Ensuite, vous pouvez continuer à exécuter l'expression régulière pour toutes les correspondances de votre chaîne.

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


0 commentaires