---
title: "Reguljärt uttryck strular lite"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/173336-reguljärt-uttryck-strular-lite"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "xcalibrate"
published: "2008-08-13T13:46:05.000Z"
updated: "2008-08-13T20:44:12.000Z"
replies: 10
views: 718
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/173336-reguljärt-uttryck-strular-lite"
---

# Reguljärt uttryck strular lite

## #1 — xcalibrate, 2008-08-13T13:46Z

Hej!

Jag får in dessa typ av data:

conn 192.168.0.1 pass hej
conn 192.168.0.1:27015 password hej
connect 192.168.0.1 hej
192\.168.0.1:27015 hej

Det är alltså olika connection strings.
Det jag vill få ut är ip-numret (192.168.0.1), och när satt port-numret (27015) och lösenordet "hej".

För att ta ut ip-numret har jag:
\\b(?:(?:25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)\\.){3}(?:25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)\\b

Mina kunskaper är begränsade här så jag skulle gärna vilja ha lite hjälp :) Det bästa vore om jag fick tre separerade uttryck (en för ip, en för port och en för lösenordet).

Tack på förhand!

Permalänk: https://www.webforum.nu/p/173336

## #2 — voigtann1, 2008-08-13T14:08Z

Skall raden börja med ett IP nummer? Och är det alltid den porten eller kan det variera? Och kan lösenordet innehålla mellanslag?
Vilket språk skall det vara till? php, .net, ruby?

Permalänk: https://www.webforum.nu/p/2133115

## #3 — xcalibrate, 2008-08-13T14:28Z

Skall raden börja med ett IP nummer?:
Inte nödvändigtvis, det kan börja med "conn 192.168.1.33"

Och är det alltid den porten eller kan det variera?
Det kan vara olika portnummer, men det är alltid ett nummer! "\[0-9+\]"?

Och kan lösenordet innehålla mellanslag?
Nej

Vilket språk skall det vara till?
C++ i detta fall

Permalänk: https://www.webforum.nu/p/2133121

## #4 — voigtann1, 2008-08-13T14:41Z

```
\b((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)):(\d+) ([^\s]+)$
```

träffar endast "192.168.0.1:27015 hej" på texten: 

```
conn 192.168.0.1 pass hej
conn 192.168.0.1:27015 password hej
connect 192.168.0.1 hej
conn [b]192.168.0.1:27015 hej[/b]
```

och:

```
conn 192.168.0.1 pass hej
conn 192.168.0.1:27015 password hej
connect 192.168.0.1 hej
[b]192.168.0.1:27015 hej[/b]
```

\\d = 0-9 vet ej om c++ klarar det men. 
Grupper $1 = IP $2 = port $3 = lösenordet.
(med Multiline i regExp options).

Permalänk: https://www.webforum.nu/p/2133123

## #5 — xcalibrate, 2008-08-13T16:28Z

Tack,

Sträng att testa mot: conn 192.168.1.33:27015 pass hej
RexExp:
\\b((?:(?:25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)\\.){3}(?:25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)):(\\d+)

Ger mig:
\- 192.168.1.33
\- 27015

Om jag lägger till " (\[^\\s\]+)$" på slutet matchar det inte. Verkar vara något fel där.
Sen funkar det inte om jag t.ex. tar bort ":27015" då matchar det inte heller. Många av de connection strings jag får in innehåller inte porten.

\* Jag testade i <http://www.utvecklarna.se/verktyg/regular_expression_validator.php>

Tack!

Permalänk: https://www.webforum.nu/p/2133133

## #6 — voigtann1, 2008-08-13T16:39Z

Vilka av dina exemplen skall matchas? uttrycket säger just nu att port nummer måste finnas:

```
\b((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)):?(\d+)? ([a-z\d]+)
```

Permalänk: https://www.webforum.nu/p/2133135

## #7 — xcalibrate, 2008-08-13T17:32Z

Alla exempel måste kunna matchas, helst i en regexp men måste man dela upp på flera är det ok.

Jag testade din senaste regexp du skickade men får resultatet:
\- 192.168.1.33
\- 27015
\- pass \<- pass istället för hej

på "conn 192.168.1.33:27015 pass hej"

Port måste INTE finnas.

Tack för din hjälp!

Permalänk: https://www.webforum.nu/p/2133152

## #8 — voigtann1, 2008-08-13T17:39Z

```
\b((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)):?(\d+)?(?: (?:password|pass))? ([a-z\d]+)
```

Om det nu alltid är password eller pass som kan finnas.

Permalänk: https://www.webforum.nu/p/2133155

## #9 — xcalibrate, 2008-08-13T17:57Z

Tack!

Permalänk: https://www.webforum.nu/p/2133158

## #10 — xcalibrate, 2008-08-13T20:22Z

Jag insåg nu att om jag skriver något av:

192\.168.1.33
conn 192.168.1.33
conn 192.168.1.33:27015

Det bästa vore om det gick att göra så att man bara ska kunna ange ip-numret så får man ip-numret och "undefined" på port och password. Samma om man skriver både ip-numret och port-numret då ska man få "undefined" på bara passwordet. Är detta möjligt?

Permalänk: https://www.webforum.nu/p/2133178

## #11 — voigtann1, 2008-08-13T20:44Z

Du får väl se om du får något i match\[1\] i ditt uttryck för port = om den finns eller längden är 0 =\> undefined.

Permalänk: https://www.webforum.nu/p/2133180

---

Tråden på webben: https://www.webforum.nu/amne/programmering/173336-reguljärt-uttryck-strular-lite
