Оптимизация Regex - выход из амперсандов в Java

Есть встроенные события для обработки MouseEnter

// Wire up the MouseEnter event when creating your buttons
button.MouseEnter += button_MouseEnter;

// Method that gets called
private void button_MouseEnter(object sender, EventArgs e)
{
    var button = sender as Button;
    ShipImage1.Location = button.Location;
}

5
задан cgp 11 May 2009 в 14:03
поделиться

4 ответа

s.replaceAll (reg, "& amp;") каждый раз компилирует регулярное выражение. Компиляция шаблона один раз обеспечит некоторое увеличение производительности (в данном случае ~ 30%).

long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
Pattern p = Pattern.compile(reg);
String s="a regex test 1 & 2  1&2 and &_gt; - &_lt;";
for (int i = 0; i < 100000; i++) {
    String test = p.matcher(s).replaceAll("&amp;");
}
System.out.println("Finished in:" + 
             (System.currentTimeMillis() - time) + " milliseconds");
6
ответ дан 14 December 2019 в 01:16
поделиться

Вы должны исключить и из своего упреждающего утверждения. Так что попробуйте это регулярное выражение:

&(?!#?[a-zA-Z0-9]{2,7};)

Или, чтобы быть точнее:

&(?!(?:#(?:[xX][0-9a-fA-F]|[0-9]+)|[a-zA-Z]+);)
2
ответ дан 14 December 2019 в 01:16
поделиться

Другой способ сделать это, не взрывая голову регулярным выражением, - использовать StringEscapeUtils из Commons Lang .

1
ответ дан 14 December 2019 в 01:16
поделиться

Я не очень хорошо знаком с классами регулярных выражений Java, но в целом вы можете захотеть изучить поиск с нулевой шириной; после амперсанда.

Вот ссылка , описывающая положительные и отрицательные прогнозы

0
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: