webForumDet fria alternativet

Reguljärt uttryck i java?

Webbutveckling

4 svar · 644 visningar · startad av spetzen

Medlem sedan feb. 200415 inlägg
Frågan#1

Är det någon som kan skriva ett exempel på ett reguljärt uttryck för att känna igen en mening. Jag försöker nämligen bygga ett litet ordbehandlingsverktyg som ska räkna ut antalet meningar.

Mvh Anders Spetz

Medlem sedan dec. 20025 483 inlägg
#2
import java.util.regex.*;

class re {
  private re(){
    Pattern p = Pattern.compile(" ?[^!\\?\\.]+[!\\?\\.]+");
    String  s = "Sträng att matcha!";
    Matcher m = p.matcher(s);
    int i = 1;

    while (m.find()){
      System.out.println("----Match " + i++ + "-----");
      System.out.println(m.group());
    }
  }

  public static void main(String args[]){
   new re();
  }
}
Medlem sedan feb. 200415 inlägg
#3

Det ser bra ut. Kan du förklara lite vad det reguljära uttrycket matchar, vad menas med det? Jag har precis börjat med java och inte arbetat med reguljära uttryck och skulle gärna få en lite förklaring.

MvH Anders Spetz

Medlem sedan dec. 20025 483 inlägg
#4
<blanksteg>? - Matcha ett blanksteg (valfritt)
[^!\\?\\.]+ - Följt av ett eller flera tecken (dock ej '!', '?' och '.').
[!\\?\\.]+ - Följt av en eller flera '!', '?' eller '.'

Jag har alltså utgått från att en mening börjar med ett eller inget blanksteg, följt av ett eller flera tecken (dock ej '!', '?' eller '.' [eftersom dessa kan anses avsluta meningar]), följt av en eller flera '!', '?' eller '.' (en mening kan alltså sluta med t.ex. "?!", "?" och "...").

Notera att uttrycket inte är optimalt, då exempelvis följande sträng: Hej (foo?) på dig!, matchas som två meningar istället för en. Dock skulle det troligtvis bli ett komplicerat och tidskrävande arbete att skapa ett optimalt, sådant, reguljärt uttryck.

Medlem sedan feb. 200415 inlägg
#5

Tackar så hemskt mycket. Det ser riktigt bra ut.

MvH Anders Spetz

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)