2016-01-09 4 views
0

У меня есть требование об изменении целых тегов h2 на веб-сайте AEM для предложения оболочки (первая буква Uppercasing). В качестве решения я пытаюсь запустить groovy-скрипт с выражением регулярного выражения, чтобы выполнить эту работу. Для этого я использую AEM groovy console по технологии city. К сожалению, регулярное выражение дает мне ошибку синтаксиса, как показано нижеGroovy scripting in AEM cq5

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
Script1.groovy: 38: unexpected char: '\' @ line 38, column 22. 
    def regexStr = "^(.*?\=\s*\w)(.*)$" 
         ^

1 error 
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309) 
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:149) 
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:119) 
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:131) 
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:359) 
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:137) 
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108) 
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) 
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:162) 
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:912) 
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:574) 
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:550) 
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:527) 
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279) 
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258) 
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:625) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:652) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:643) 
at groovy.lang.GroovyShell$parse.call(Unknown Source) 
at com.citytechinc.cq.groovyconsole.services.impl.DefaultGroovyConsoleService.runScript(DefaultGroovyConsoleService.groovy:84) 
at com.citytechinc.cq.groovyconsole.services.GroovyConsoleService$runScript.call(Unknown Source) 
at com.citytechinc.cq.groovyconsole.servlets.ScriptPostServlet.doPost(ScriptPostServlet.groovy:39) 
at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:148) 
at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:344) 
at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:375) 
at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:508) 
at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:45) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:64) 
at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:146) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.core.impl.WCMComponentFilter.filterRootInclude(WCMComponentFilter.java:356) 
at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:168) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:96) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:254) 
at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:64) 
at com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.doFilter(AuthoringUIModeServiceImpl.java:301) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.core.impl.warp.TimeWarpFilter.doFilter(TimeWarpFilter.java:106) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter.doFilter(RedirectFilter.java:290) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:64) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet.doFilter(FormsHandlingServlet.java:221) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.theme.impl.ThemeResolverFilter.doFilter(ThemeResolverFilter.java:76) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.adobe.granite.optout.impl.OptOutFilter.doFilter(OptOutFilter.java:74) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.core.impl.WCMRequestFilter.doFilter(WCMRequestFilter.java:90) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.adobe.cq.history.impl.HistoryRequestFilter.doFilter(HistoryRequestFilter.java:107) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at com.day.cq.wcm.designimporter.CanvasPageDeleteRequestFilter.doFilter(CanvasPageDeleteRequestFilter.java:88) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:83) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at uk.co.ee.web.filters.impl.SegmentCookieFilter.doFilter(SegmentCookieFilter.java:148) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at uk.co.ee.web.filters.impl.FormSSLFilter.doFilter(FormSSLFilter.java:145) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:127) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter.doFilter(BackgroundServletStarterFilter.java:135) 
at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60) 
at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processRequest(SlingRequestProcessorImpl.java:151) 
at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:206) 
at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) 
at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) 
at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:127) 
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) 
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:55) 
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) 
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:179) 
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) 
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:263) 
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) 
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) 
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) 
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) 
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) 
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
at com.day.j2ee.servletengine.ServletRuntimeEnvironment.service(ServletRuntimeEnvironment.java:250) 
at com.day.j2ee.servletengine.RequestDispatcherImpl.doFilter(RequestDispatcherImpl.java:321) 
at com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:340) 
at com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:383) 
at com.day.j2ee.servletengine.ServletHandlerImpl.process(ServletHandlerImpl.java:335) 
at com.day.j2ee.servletengine.HttpListener$Worker.run(HttpListener.java:644) 
at java.lang.Thread.run(Thread.java:745) 

Кто-нибудь может указать на то, что это то, что мне не хватает или помочь мне с более эффективным подходом для делает задачу. заранее спасибо.

Вот код:

def emailStr = "[email protected]" 
def regexStr = "^(.*?\=\s*\w)(.*)$" 
if (emailStr.matches(regexStr)) { 
    // If we arrive here then the emailStr is a correctly formatted email string 
    println 'this is matching' 
} else { 
    // If we arrive here then the email address is not correctly formatted and needs to be handled somehow. 
    println 'this is not matching' 
} 
+0

Являются ли эти теги h2 частью содержимого richtext? Вы хотите найти их с регулярным выражением, а затем заменить первую букву в верхнем регистре? –

+1

no Michal. Это будет только некоторое свойство, включенное в тег h2. @opal - спасибо за редактирование вопроса и его выяснение. –

ответ

5

Пожалуйста, проверьте этот documentation относительно Groovy и регулярных выражений. По-видимому, отлично работает:

def emailStr = "[email protected]" 
def regexStr = /^(.*?\=\s*\w)(.*)$/ 
if (emailStr.matches(regexStr)) { 
    // If we arrive here then the emailStr is a correctly formatted email string 
    println 'this is matching' 
} else { 
    // If we arrive here then the email address is not correctly formatted and needs to be handled somehow. 
    println 'this is not matching' 
} 

Что касается капитализации первой буквы конкретного свойства, этот сценарий может быть полезным:

getNode("/content/").recurse({ node -> 
    if (node.get("title") != null && someBetterCondition) { 
     node.set("title", node.get("title").trim().capitalize()) 
    }; 
}) 

Однако, вы должны написать лучшее состояние, как ваша собственность имя не может быть таким уникальным в репозитории. Необходимо проверить тип ресурса компонента. Кроме того, не забудьте сохранить изменения после этого фрагмента кода, вызвав save().

+0

Мой плохой. Я пытался отметить его как строку и выполнить сопоставление. Благодарю Майка. ваш ответ работает. –

Смежные вопросы