Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Java] jak znajdę dane wyrażenie to zwróć całe zdanie, wyrażenia regularne
gregi
post 5.05.2015, 14:50:17
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


Cze jak podejść do tematu :
Jeżeli znajdzie ciąg znaków np "dom" w danym Stringu to jak zwrócić np:
całe zdanie czyli ciąg znaków od . do. (tam gdzie było słowo dom)
albo całą linie czyli po białym znaku entera (tam gdzie było słowo dom)
albo 20 znaków od lewej i 20 znaków od prawej (tam gdzie było słowo dom)




  1. Pattern pattern = null;
  2. try {
  3. pattern = Pattern.compile(regex);
  4. } catch (Exception exc) {
  5. System.out.println(result + "WWWW\n" + exc.getMessage());
  6. }
  7.  
  8. Matcher matcher = pattern.matcher(text);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Kshyhoo
post 5.05.2015, 14:58:11
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Może to Ci pomoże:
  1. import java.io.*;
  2. import java.util.regex.*;
  3.  
  4. public class test {
  5. public static void main(String args[]) {
  6. String linia, txt=null;
  7.  
  8. try {
  9. BufferedReader b = new BufferedReader(new FileReader("test.java"));
  10. while((linia = b.readLine()) != null) txt+=linia+"\n";
  11.  
  12. Pattern p = Pattern.compile("while.*");
  13. Matcher m = p.matcher(txt);
  14. while(m.find()) System.out.println("Jest: "+m.group());
  15.  
  16. // System.out.println(txt);
  17.  
  18. } catch (IOException e) {
  19. System.out.println("Błąd: "+e);
  20. }
  21. }
  22. }


--------------------
Go to the top of the page
+Quote Post
gregi
post 5.05.2015, 15:41:56
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


  1. Pattern p = Pattern.compile("while.*");

wyświetla mi to ci jest po prawej stronie po słowie while

A gdy : *.while.*
  1. Pattern p = Pattern.compile("*.while.*")
  2. Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
  3. *.hard.*
  4. ^
  5. at java.util.regex.Pattern.error(Unknown Source)
  6. at java.util.regex.Pattern.sequence(Unknown Source)
  7. at java.util.regex.Pattern.expr(Unknown Source)
  8. at java.util.regex.Pattern.compile(Unknown Source)
  9. at java.util.regex.Pattern.<init>(Unknown Source)
  10. at java.util.regex.Pattern.compile(Unknown Source)
  11. at memo.testLookingfor.main(testLookingfor.java:21)
  12.  
  13. ;

a jak uzyskać całe zdanie z tym słowem? : )

Ten post edytował gregi 5.05.2015, 15:43:55
Go to the top of the page
+Quote Post
salfunglandyare
post 5.05.2015, 16:04:57
Post #4





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


a ".*while.*" ?
Go to the top of the page
+Quote Post
gregi
post 6.05.2015, 08:04:03
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


Ok
A teraz jak zrobić aby zwróciło dodatkowo zdanie przed i kolejne zdanie?
czyli poglądowo ?

xxxxx xxxxxxxx //jak zwrócić to
yyyyyyy while yyyyyyyy - // to już mamy
zzzzzz zzzzzzzzz //jak zwrócić to
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:46