Привет, я работаю над своим приложением Grails, в котором я подключаюсь к gmail через imap и жду входящих писем. Когда приходит электронное письмо, мне нужно получить его содержимое, и оно должно быть строкой. Затем мне нужно сопоставить эту строку с регулярным выражением, чтобы получить наиболее ценные данные. Проблема в том, что с этой строкой что-то не так, и она не соответствует моему регулярному выражению, которое я тестировал на обычной многострочной groovy строке, и все работало нормально.
def processMessage(def imapMessage){
if(message && message instanceof IMAPMessage){
def content = message.getContent()
println 'Content ='+ content
m_mailContent = content
println 'm_mailContent is ' + m_mailContent
}
А потом
def getType(){
def type = 0
if(utility.ParseUtil.matches(m_mailContent, WEB_SERVICE_REGEXP)){
type = 1
}else if(utility.ParseUtil.matches(m_mailContent, BNET_REGEXP)){
type = 2
}else if(utility.ParseUtil.matches(m_mailContent, QUEUED_REGEXP)){
type = 3
}
return type
}
But i almost always get type = 0
Возможно, мне нужно что-то сделать с этой строкой. Я понятия не имею, какую строку я получу. При печати все кажется нормально. Конечно, в нем могут быть какие-то специальные символы, но могу ли я их избежать?
def WEB_SERVICE_REGEXP = /.*ErrorID:\s*[A-Za-z\d\/\.-]*\n.*Time:\s*[A-Za-z\d\/\s:]*\n.*URL:\s*[A-Za-z\d\/\.]*\n/
и строка, которую я получаю из gmail, выглядит примерно так
ErrorID: -732861900
Time: Tue May 24 09:57:54 CEST 2011
URL: /transnet/organisation.jsp
HttpCode: 500
Error: class java.lang.SecurityException: Access denied.
User: Peter Rådlund (peraa), DHL Express (Sweden) AB
Domain: DHL Support
Stacktrace
----------------------------------------------------------------------
java.lang.SecurityException: Access denied.
at com.memnon.transnet.admin.Account.checkUpdate(Account.java:725)
at com.memnon.transnet.consignment.ConsignmentDB.updateOrganisation(ConsignmentDB.java:152)
at org.apache.jsp.transnet.organisation_jsp._jspService(organisation_jsp.java:842)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.A
Я пытаюсь сделать это так
//ParseUtil
static def matches(String str, def regexp){
def m = str =~ regexp
m.find()
}
Надеюсь, теперь все ясно.