Я пытаюсь удалить нежелательные символы из строки в Velocity (переводы строки в порядке, но не такие вещи, как управляющие символы EM и CAN ASCII).
#set($cleanScreen = $cleanScreen.replaceAll("\p{Cc}", ""))
Выдает:
org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 13, column 82. Encountered: "p" (112), after : "\"\\"
at org.apache.velocity.Template.process(Template.java:137)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:415)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1077)
at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:303)
at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:503)
и
#set($cleanScreen = $cleanScreen.replaceAll("[[:cntrl:]]", ""))
Это не выдает исключение, вместо этого оно соответствует символам c,n,t,r,l
и удаляет их из строки.
и ...
#set($cleanScreen = $cleanScreen.replaceAll("\\p{Cntrl}", ""))
Выдает:
java.util.regex.PatternSyntaxException: Illegal repetition near index 2
\\p{Cntrl}
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.closure(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at sun.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:295)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:245)
Я пробовал несколько регулярных выражений (многие, кажется, работают на Java, но не VTL)? Кажется, моя ключевая проблема заключается в том, как обстоят дела с выходом между Java и Velocity?
Может кто-нибудь помочь? У меня есть доступ только к VTL, а не к классу Java.