Это может быть связано с RegEx DOS .
Java использует традиционный алгоритм NFA [1] для поддержки таких функций, как отложенное выполнение, возврат и обратная ссылка.NFA «съедает» персонажа каждый раз и пытается сопоставить его с регулярным выражением, и «выплевывает» его, если он не совпадает.Он будет плевать до тех пор, пока не найдет другое совпадение (аналогично глубокому первому поиску), и, таким образом, некорректные выражения могут привести к тому, что механизм RegEx встретится с DOS RegEx, и, в частности, в Java, он, наконец, вызовет переполнение стека для длинных строк.
Согласно OWASP, выражения злого регулярного выражения содержат: Шаблон злого регулярного выражения содержит:
- Группировка с повторением (1)
- Внутри повторяемой группы:
- Повтор
- Чередование с перекрытием (2)
После краткого изучения выражения регулярного выражения,кажется, что у вас есть (1) и (2), поскольку у вас есть ()*
(повторение) и \\.|[^\']
(перекрытие), поэтому я полагаю, что вам, возможно, придется реструктурировать выражение RegEx, чтобы избежать RegEx DOS.