12. oktober 2005 - 21:05
Der er
6 kommentarer og 1 løsning
Find linie et et dokument der matcher
Jeg er ved at lave et lille program som skal kunne lede et tekst dokument igennem efter en bestem string. Det er dog ikke så svært. Men den linie der er i filen, har et forskellige nummer, som 1 og 12. Jeg har kigget lidt på RegEx, men har dog ikke kunne få det til at virke (da jeg ikke har nogen erfaring med det), jeg håber at nogen kan se hvad jeg gør forkert: private static void readFile(String path, boolean change){ try { FileReader fstream = new FileReader(path); BufferedReader in = new BufferedReader(fstream); String line = ""; if(!in.ready()) throw new IOException(); Pattern p = Pattern.compile("user_pref(\"network.proxy.type\", [0-9]*);"); while((line = in.readLine()) != null){ System.out.print(p.pattern() + " - "); Matcher m = p.matcher(line); System.out.print(m.matches() + " - "); System.out.println(line); } in.close(); } catch (FileNotFoundException e) { System.out.println(e); } catch (IOException e) { System.out.println(e); } } Jeg har importeret: import java.util.regex.*; Håber nogen kan finde fejlen, eller lede mig på rette spor :)
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
12. oktober 2005 - 21:12
#1
kunne du ikke vise et stykke input fil + hvad du vil have skrevet ud af det ?
12. oktober 2005 - 21:15
#2
Filen indeholder dette: user_pref("network.cookie.prefsMigrated", true); user_pref("network.enableIDN", false); user_pref("network.proxy.ftp", "192.168.0.200"); user_pref("network.proxy.ftp_port", 4320); user_pref("network.proxy.gopher", "192.168.0.200"); user_pref("network.proxy.gopher_port", 4320); user_pref("network.proxy.http", "192.168.0.200"); user_pref("network.proxy.http_port", 4320); user_pref("network.proxy.share_proxy_settings", true); user_pref("network.proxy.ssl", "192.168.0.200"); user_pref("network.proxy.ssl_port", 4320); user_pref("network.proxy.type", 1); og det er den sidste linie jeg gerne vil have ud, uanset hvilket tal der står til sidst.
12. oktober 2005 - 21:25
#3
eksempel: package october; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Find { private static final Pattern p = Pattern.compile("user_pref\\(\"network.proxy.type\", ([0-9]+)\\);"); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("C:\\test.js")); String line; while((line = br.readLine()) != null) { System.out.println(line); Matcher m = p.matcher(line); if(m.find()) { System.out.println("bingo ! (number=" + m.group(1) + ")");; } } br.close(); } }
12. oktober 2005 - 22:15
#4
Mange tak, jeg kunne se at fejlen lå i regex'en. 1000 tak for hjælpen, smid lige et svar for points :) og hvis du kender et godt link til at lære regex så smid endelig også det ;)
12. oktober 2005 - 22:17
#5
svar
12. oktober 2005 - 22:18
#6
jeg har faktisk lært det meste jeg kan om regex udfra Java Docs på Pattern klassen (og så en masse trial and error) men der er regex tutorials på nettet
12. oktober 2005 - 22:18
#7
Mange tak, jeg prøver at kigge på det
Kurser inden for grundlæggende programmering