加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Pattern和Matcher的Java正则表达式

发布时间:2020-12-15 02:21:56 所属栏目:Java 来源:网络整理
导读:我的问题与 Java中的正则表达式有关,特别是给定搜索模式的多个匹配.我需要获得的所有信息都在1行,它包含一个映射到IP地址的别名(例如SA).每个都用逗号分隔.我需要提取每一个. SA "239.255.252.1",SB "239.255.252.2",SC "239.255.252.3",SD "239.255.252.4"
我的问题与 Java中的正则表达式有关,特别是给定搜索模式的多个匹配.我需要获得的所有信息都在1行,它包含一个映射到IP地址的别名(例如SA).每个都用逗号分隔.我需要提取每一个.

SA "239.255.252.1",SB "239.255.252.2",SC "239.255.252.3",SD "239.255.252.4"

我的Reg Ex看起来像这样:

Pattern alias = Pattern.compile("(S+)s+"(d+.d+.d+.d+)"");  
Matcher match = alias.matcher(lineInFile)  
while(match.find()) {  
   // do something  
}

这有效,但我并不完全满意,因为自从引入这一小段代码后,我的程序已经减慢了一点(<1秒)但足以注意到差异. 所以我的问题是,我是否以正确的方式解决这个问题?是否有更高效或可能轻量级的解决方案,而不需要一个while(匹配)循环?和/或模式/匹配类?

解决方法

如果该行可能不包含除别名定义之外的任何内容,则使用.match()而不是.find()可能会加快对非匹配的搜索.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读