25. januar 2010 - 16:43Der er
4 kommentarer og 1 løsning
Regex i Java.
Jeg er igang med et mindre Java projekt der indebærer Regex. Jeg lavede før det projekt i VB.NET, hvor hele mit Regex eksempel så således ud:
r = New Regex("<tag1 eksempel=""Denne value er konstant""(.*?)><tag2(.*?)>(.*?)</tag2></tag1>") mt = r.Match(String) While mt.Success 'Eksempel mt = mt.NextMatch() End While
Så jeg Googlede lidt på det og fandt frem til dette
Pattern p = Pattern.compile("<tag1 eksempel=\"Denne value er konstant\"(.*?)><tag2(.*?)>(.*?)</tag2></tag1>"); Matcher m = p.matcher(s); boolean result = m.find();
while(result){ //eksempel result = m.find(); } ______________________________________________________
Skulle jeg personligt oversætte fra VB.NET til Java ville jeg sige, at disse eksempler er rimelig identiske.
Men deres performance er ikke den samme. VB.NET eksemplet fungerer en hel del bedre!
Jeg vil gerne have mit Java regex til at fungere lige så godt. Har i nogle forslag?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
public class REFind { public static void test(String s) { Pattern p = Pattern.compile("<tag1 eksempel=\"Denne value er konstant\"(.*?)><tag2(.*?)>(.*?)</tag2></tag1>"); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); } } public static void main(String[] args) { test("bla <tag1 eksempel=\"Denne value er konstant\" foo=\"bar\"><tag2 bar=\"foo\">abc</tag2></tag1> bla <tag1 eksempel=\"Denne value er konstant\" foo=\"bar\"><tag2 bar=\"foo\">def</tag2></tag1> bla"); } }
Lukker. Problemet lå ikke i mit regex nej, men i størrelsen af det string jeg skulle matche.
Synes godt om
Ny brugerNybegynder
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.