您好我正在處理我的grails應用程序,以至於我通過imap連接到gmail並等待收到的電子郵件。當電子郵件到達時,我需要獲取它的內容,它假設是一個字符串。然後,我需要將此字符串與正則表達式匹配以獲取最有價值的數據。問題是這個字符串有什麼問題,它不符合我在常規多行groovy字符串上測試的正則表達式,並且一切正常。用groovy讀取IMAP郵件內容字符串
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()
}
我希望這是一種明顯的現在。
發佈您的正則表達式以及您從gmail獲取的一些示例字符串。此外,嘗試通過ParseUtil匹配一個示例字符串,它可能會做一個太嚴格==〜而不是鬆散=〜匹配 – virtualeyes 2011-05-24 08:02:49
什麼是'utility.ParseUtil'在做什麼?「m_mailContent」預期會有什麼值?什麼是「WEB_SERVICE_REGEXP」,「BNET_REGEXP」和「QUEUED_REGEXP」 – 2011-05-24 08:04:19