---
title: "Reguljära Uttryck"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/45029-reguljära-uttryck"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "SPiN"
published: "2002-06-01T19:54:45.000Z"
updated: "2002-07-01T07:29:18.000Z"
replies: 14
views: 437
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/java/45029-reguljära-uttryck"
---

# Reguljära Uttryck

## #1 — SPiN, 2002-06-01T19:54Z

Jag sitter och pillar med regular expressions, men är väldigt osäker på hur jag ska göra. Jag vill plocka ut data ur en sträng, in i separata strängar.

Strängen med rådata kan se ut som följer:

```
NAME SPiN TYPE Javare\nCALLER PersonNamn.PersonID\n\n
```

Det jag nu vill plocka ut ur strängen är SPiN och PersonNamn.PersonID, så jag tänkte mig något sånt här:

```
String string = "NAME SPiN TYPE Javare\nCALLER PersonNamn.PersonID\n\n";

Pattern pattern = Pattern.compile ( "NAME [A-Za-z_-\\.].* TYPE .*?", Pattern.MULTILINE );
Matcher matcher = pattern.matcher ( string );

if ( !matcher.matches () ) {
      // Inga träffar
      return;
}

String theName = . // Hur plockar jag ut SPiN hit?
```

Sen är det ju bara att upprepa proceduren när jag vill plocka ut PersonNamn.PersonID.

Vilken metod i Matcher ska användas för att plocka ut data? Ser mönstret bra ut, eller finns det något snyggare?

MvH,

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

## #2 — nicclas, 2002-06-02T12:08Z

Vilken metod i Matcher ska användas för att plocka ut data? Matcher.getMatch() går bra att använda. För att få ut resultaten måste du kapsla in de delar du är intresserade av med ()-tecken.

Ser mönstret bra ut, eller finns det något snyggare?  Det ser väl bra ut, men det fungerar inte ;) Du måste tex. escape:a - tecknet till \\\\- annars tror den att du angett en "range". Dessutom måste du ange DOTALL för att få . att matcha ett radbrytningstecken.

/nicclas - <https://www.frisim.com>

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

## #3 — SPiN, 2002-06-02T12:16Z

Glömde visst att escape:a ser jag nu, tackar tackar. :)

Men metoden getMatch () hittar jag inte för klassen Matcher. <http://java.sun.com/j2se/1.4/docs/api/java/util/regex/Matcher.html> 
 :q

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

## #4 — nicclas, 2002-06-02T12:29Z

Sorry, jag kör fortfarande med Java 1.3 och OROMatcher (som jag trodde var den som Sun "tog med" i Java 1.4). I OROMatcher finns matcher.getMatch() :)

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

## #5 — nicclas, 2002-06-02T12:35Z

Det verkar som om du kan använda group() direkt i Java 1.4 util.regex-paketet efter det du gjort

 Pattern p = Pattern.compile("a\*b");
 Matcher m = p.matcher("aaaaab");
 boolean b = m.matches();

anropen.

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

## #6 — SPiN, 2002-06-02T13:38Z

> Det verkar som om du kan använda group()

 :i
Tack! :)

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

## #7 — Lime, 2002-06-03T06:51Z

Varför?

Om det är någon typ av kommunikationssprotokoll du skall göra, varför då hålla kvar vid "kommaseparerat"? Använd dig av XML istället så får du massor gratis.

/Lime

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

## #8 — SPiN, 2002-06-03T08:35Z

Jäpp, jag vet. XML brukar jag använda mig av. I det här fallet så är det inte bara jag som ska sitta och koda, och protokollet är redan utvecklat. :l

Men jag håller med dig, XML är det man ska använda för sånt här.

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

## #9 — Lime, 2002-06-03T14:40Z

Så det är något puckohuvud (alltså kan det inte var du SPiN) som har analyserat och systemerat felaktigt.

Du har mina djupaste sympatier.

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

## #10 — SPiN, 2002-06-03T14:49Z

Tack. ;)

Jag har faktiskt en till fråga, som är lite mer en undran:
Om jag vill logga någonting, rätt så ofta i min applikation, vilket är det snyggaste och effektivaste sättet? Jag sneglar en hel del på Hashtable och skriver sedan den serialiserade till en fil. Finns det något bättre sätt som jag bör använda mig av?

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

## #11 — SPiN, 2002-06-03T14:58Z

Hm, kanske man ska föredra att skriva i plaintext, så att användarna kan öppna logfilerna med i stort sett vilket verktyg som helst - utan att vara tvungna att läsa dem genom applikationen?

Lime\> Ja, jag funderar på att skriva logfilen i XML-format. :e ;)

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

## #12 — SPiN, 2002-06-29T16:59Z

\*bump\*

Vad är egentligen snabbast att använda? Reguljära uttryck eller en Tokenizer? Reguljära uttryck **ser** ju lite trevligare ut, men är det söligt så är det ingenting som lockar... :)

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

## #13 — spango, 2002-06-30T21:44Z

Beror väl på vad man ska göra, regexpar måste ju kompileras och är ju mer komplicerade än tokenizers. Skulle nog gissa att tokenizers är snabbare på själva uppsplittandet, men om man ska slänga till ett ton extrakod för att hantera alla tokens i stället för att använda några små gulliga regexpar kan det säkert bli slöare. I ditt fall kan jag nog tänka mig att tokenizers blir snabbare.

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

## #14 — SPiN, 2002-06-30T22:27Z

Tackar, tackar för funderingen, får se var det slutar. Snygg kod är ju allt mycket trevligare... :)

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

## #15 — sgtpepper, 2002-07-01T07:29Z

> Om jag vill logga någonting, rätt så ofta i min applikation, vilket är det snyggaste och effektivaste sättet?

Använd Log4J eller den loggningsfunktionalitet som finns (tror jag :)) i 1.4, det är enklast OCH effektivast.

<http://jakarta.apache.org/log4j/docs/index.html>

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

---

Tråden på webben: https://www.webforum.nu/amne/java/45029-reguljära-uttryck
