Muszę zastąpić wszystkie & w ciągu, który nie jest częścią encji HTML. Tak, że ciąg "This & udziałów w jednostkach >
& <
" zwróci "To &
udziałów w jednostkach > & <
"Optymalizacja regeksu - wymykanie się znakom ampersands w języku Java
A ja wymyśliłem ten regex-wzorca: "& [a-zA-Z0-9] {2 , 7}; "który działa dobrze. Ale nie jestem bardzo wyszkolony w regex, a kiedy testuję szybkość ponad 100k iteracji, to wykorzystuje on podwójną ilość czasu względem poprzedniej używanej metody, która nie używała regex. (Ale też nie działa w 100%).
Testcode:
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
Więc pytanie byłoby, czy istnieją pewne oczywiste sposoby zoptymalizować ten regex wyrażenie na to, aby być bardziej skuteczne?
musiałem napisać udziałów w jednostkach z podkreśleniem jak &_gt; albo że to pokazać jako symbol kod był za. – Duveit
Prawie czterech z nas próbowało edytować tekst, aby otoczyć ampersandy cytatami w formacie kodu. Wystarczy wybrać odpowiedni tekst i użyć kodu, zachowa on znak ampersand. – cgp