J'ai cette ligne:
SRC=(.+)(\d+)(.+?(?=DST))
Comment puis-je obtenir uniquement src = (ipaddress) et obtenir simplement l'adresse ip?
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
4 Réponses :
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));
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)
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 du code JS,
SRC\s*=\s*(\d{1,3}(?:\.\d{1,3}){3})
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;
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