正则表达式匹配求助:提取目标字符串并移除末尾'at'
正则优化方案
问题背景
现有日志字符串:
com.jav.orgs.exceptions.sessionException: A1234- problem accessing the session at com.jav.orgview.OpenSessionJVM(JVM Method)
需要提取目标内容:com.jav.orgs.exceptions.sessionException: A1234- problem accessing the session
原正则表达式exceptions.sessionException:(?[\s\w-]+ )匹配结果末尾多了"at",不符合预期。
优化后的正则表达式
方案1:精准匹配到" at "前的内容
(com.jav.orgs.exceptions.sessionException: .+?)(?= at )
- 解释:
(.+?):非贪婪模式匹配任意字符,避免过度匹配后续内容(?= at ):正向预查,确保匹配到" at "这个固定分隔符前停止,不会包含"at"
方案2:限定字符范围适配场景
如果目标内容本身不会出现"at"开头的片段,也可以用更严格的字符匹配:
(com.jav.orgs.exceptions.sessionException: [\w\s-]+)(?=\s+at)
- 解释:
([\w\s-]+):仅匹配字母、数字、空白、连字符,适配目标内容的字符类型(?=\s+at):正向预查,匹配到空白+at的位置时终止
验证效果
使用优化后的正则匹配原日志,可直接得到预期的完整目标内容:com.jav.orgs.exceptions.sessionException: A1234- problem accessing the session
内容的提问来源于stack exchange,提问作者venky
相关产品推荐
相关产品推荐

