Avatar billede tgv Nybegynder
06. marts 2007 - 15:12 Der er 4 kommentarer

Regex i java

Hej alle

Jeg ønsker at benytte et regex java for at identificere tekst efter følgende model:

text|whitespace|text

Jeg har fundet frem til dette regex for at identificere teksten:

Pattern pattern = Pattern.compile("\\w+\\s+\\w+");

Altså et eller flere bogstaver, efterfuldt af et eller flere blanktegn efterfulgt af et eller flere bogstaver. Dvs hvis jeg har teksten:

"En lille blå bil" vil jeg gerne have følgende tilbage:

"En lille","lille blå" og "blå bil".

Problemet er at jeg kun får

"En lille" og "Blå bil" - det er altså somom regex spiser det der allerede er blevet analyseret så der ikke kan findes "lille blå".

jeg bruger java 1.5 og koden nedenunder for at teste mit regex

Pattern pattern = Pattern.compile("\\w+\\s+\\w+");   
Matcher matcher = pattern.matcher(s);

while (matcher.find())
{
  System.out.println("I found the text: " + matcher.group() + "starting at: " + matcher.start() + " and ending at index: " + matcher.end());
}

Er det muligt at lave et regex, eller benytte en anden metode and find for at java's implementation af regex tilsvarer det jeg forventer?
Avatar billede erikjacobsen Ekspert
06. marts 2007 - 15:19 #1
Formentlig med "lookahead" - ikke testet:
  Pattern pattern = Pattern.compile("\\w+\\s+(?=\\w+)");
Avatar billede tgv Nybegynder
06. marts 2007 - 15:30 #2
Det giver:

I found the text: en  starting at: 0 and ending at index: 3
I found the text: lille  starting at: 3 and ending at index: 9
Search complete

Så det virker desværre ikke
Avatar billede tgv Nybegynder
06. marts 2007 - 17:14 #3
Det var ikke helt rigtigt hvad jeg skrev før, siden \\w ikke fanger å, hvis det ændres til aa giver det:

I found the text: En  starting at: 0 and ending at index: 3
I found the text: Lille  starting at: 3 and ending at index: 9
I found the text: Blaa  starting at: 9 and ending at index: 14
Search complete

Problemet er nu at lookahead rigtigt nok tager det i betragtning, men det kommer ikke med i output :(
Avatar billede erikjacobsen Ekspert
06. marts 2007 - 17:38 #4
Ja, det er problemet med lookahead - husker det godt nu ;)
Jeg ser om jeg kan finde en anden løsning - ellers er der jo stringtokenizer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester