Я код в Eclipse, и когда я делаю CTRL-F
, чтобы найти некоторую строку, я вижу, что помимо стандартизованных опций целого слова, чувствительного к регистру, есть опция для поиска регулярных выражений (это также есть в Notepad ++) ,Есть ли способ оптимизировать общее регулярное выражение?
Я пробовал его один или два раза, и в целом результаты почти мгновенные. Но в конце концов, файлы кода не являются большими, самые большие из них не более 500 строк, причем большинство строк заполнено менее чем наполовину. Есть ли способ оптимизировать, чтобы любое пользовательское регулярное выражение выполнялось намного быстрее на большой части текста, скажем, размером 10-15 МБ?
Я не могу придумать какой-либо метод, потому что не будет применяться стандартный алгоритм поиска, такой как Rabin-Karp, или дерево суффикса!
Когда вы говорите «любое пользовательское регулярное выражение», вы даете своим пользователям пустую проверку, чтобы писать плохие регулярные выражения - скажем, с большим количеством обратного отслеживания, неохотными кванторами и т. Д. Невозможно оптимизировать для этого - так же, как невозможно написать компилятор, который заставит любой код работать быстро, независимо от того, насколько неоптимальным может быть указанный код. – dasblinkenlight
Если вы можете немного ограничить свой аромат регулярного выражения (например, исключая обратные ссылки), вы можете значительно повысить производительность: http://swtch.com/~rsc/regexp/ –