Wpis z mikrobloga

Mirasy #javascript #python mam problem.
Walczę z tym już dłuższy czas niestety jestem nadal słaby into #regex
Czy ktoś może podpowiedzieć jak powinno wyglądać wyrażenie żeby z:

System ID: 0135049598 (costam2); partner ID: 0135024127 (costam1)
System Serial Number: 20015686 (costam2)
System Rev: H3
System Storage Configuration: Single-Path HA
System ACP Connectivity: NA

Wyciągnąć za pomocą wyrażenia
System Serial Number: 20015686 - z tym że value ma być tylko numerek.

Próbowałem z lookahead itd ale nadal nie udaje mi się zaznaczyć tylko interesującej mnie wartości
/(?!System Serial Number\: )(\d+)/g
Non stop zaznacza mi nie tylko ten numer ale wszystkie inne numery również
  • 14
  • Odpowiedz
@zboinek: Nie wiem jakiego API używasz, ale powienieneś mieć po wykonaniu regexa tabelę z matchami. Match 0 to całość, ale match 1 będzie pierwszą onawiasowaną formułą, czyli (\d+). Negative lookahead (?!) bywa różnie wspierany.
  • Odpowiedz
@zboinek:

str="System ID: 0135049598 (costam2); partner ID: 0135024127 (costam1)\nSystem Serial Number: 20015686 (costam2)\nSystem Rev: H3\nSystem Storage Configuration: Single-Path HA\nSystem ACP Connectivity: NA";
reg=/System Serial Number\: (\d+)/g ;
matches = reg.exec(str);
console.log(matches[1]);

20015686
  • Odpowiedz
@zboinek: Taki sidenote - określ, w jakim języku używasz regex'a, bo różne silniki wspierają różne konstrukcje regexowe. Między pythonem a JS są chyba spore różnice (m.in. jeśli chodzi o lookaroundy).

Co do głównego pytania: wystarczy regex w stylu System Serial Number: (\d+). Po znalezieniu match'a w swoim języku będziesz musiał się odnieść do jego grup (w samym regexie definiowaną przez nawiasy okrągłe) i wyciągnąć tą pierwszą. Niektóre implementacje przyjmują,
  • Odpowiedz
Dzieki wszystkim za pomoc, rozjaśniliście sprawę :)
Udało się ;) Splunk działa jeszcze trochę inaczej - matcha robi się poprzez wskazanie pola w nawiasach tj. nadania mu nazwy :)
  • Odpowiedz