使用正则表达式进行查找

在某些时候我们想要查找一个样式的字符串,比如email,姓名,某些产品的编号。一般暴力的方法是你吧所有可能的形式都存一下,然后再对每个串一一匹配。但是往往满足要求的数据太过于海量让我们无法应对。但是已经有强者完成了我们想法。创造出来了这么个东西。这是java上

本文是非常简单的讲解,毫无深度。

正则表达式的元字符(使用百度百科的表格)先看下面有根据需要看表

 

 但是我们平常实际上用的不是太多。我们来了解基本的几个

方法:

[ ]表示或比如我们把几个元字符加入其中[A-Za-z0-9-_]就表示大写字母或者小写字母、或者0-9数字,或者-,或者_(不一定要上表元字符,你自己其他的单个字符也没有问题)

[^]表示匹配的位置是不是方括号里面的东西

( )这是一个圆括号将里面包含的满足匹配的数都放入group,我们再讲group中满足要求的数字取出来即可

量:

*表示前一个字符出现0次或多次

+表示前一个字符出现1次或多次

?表示前一个字符出现0次或一次。加在其他量面前表示非贪婪模式何为贪婪模式见上表

{n}表示前一个字符恰出现n次

{n,}表示前一个字符出现次数大于n次

{n,m}表示前一个字符出现n-m次

 

同时使用时我们要依靠两个类

Patten和Matcher

看一下

Matcher类

compact1,compact2,compact3
java.util.regex中

类匹配器

  • java.lang.Object继承
    • java.util.regex.Matcher中
  • 所有已实现的接口:
    的MatchResult
    方法

那么我们看一看实际应用吧

String regex="[^A-Za-z0-9_-]@([A-Za-z0-9_-]*)";//这是我们的正则表达式目的是获取@后的人名。本问题中@生效的条件是@是非数字,非字母,非下划线,非分隔符。名字是字母数字下划线字母,*表示多个
Pattern p=Pattern.compile(regex);//这里相当于解析正则表达式
for(int i = 0; i < tweets.size();i++)
{
  Matcher m=p.matcher(tweets.get(i).getText());//这里匹配我们的内容tweets.get(i).getText()是String类型的一段文字
  while(m.find()){                      //在有匹配的情况下
  for(int j = 1;j < m.groupCount()+1;j++)            //所有匹配数
  {
    nameList.add(m.group(j).toLowerCase());//return the String with lowercase//得到所有的匹配数m.group(j)得到第j个匹配串
  }
}

 

转载于:https://www.cnblogs.com/hitycy/p/10553566.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值