首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正则表达式

最近在一个作业中涉及到对字符串的提取,比如:在字符串“2016级信本1班1001张三”中,要提取此字符串中学生的学号,一般我们可以通过String方法的substring方法来提取,在这里我们也可以通过正则表达式来提取到学生的学号,先上源码。

源码:

实验结果:

通过源码我们可以很容易的看出正则表达式主要需要使用到Matcher类和Pattern类,因此如果我们要使用正则表达式我们可以先写出基本的语法:Matcher matcher = Pattern.compile(“”).matcher(“”);此时我们就要来填参数了,在第一个括号内需要填入的是我们需要得到的信息,是一个固定的模式。比如说:我们需要得到学号的信息,因此我们的参数是“班(\\d+)张三”,我们可以简单的理解这里的参数为一个字符串,而这个字符串是由你要的字符串的前面一部分+你想要的字符串+你想要的字符串的后面的部分,其中你想要的字符串用括号扩起来,然后用对应的规则来表示,对应规则我们后面再讲,比如:“信本(\\d)班”则最后的输出结果为1,表示此同学是几班;而matcher后面的参数表示原始字符串,我们可以理解为要从哪个字符串去提取信息,那么这个参数就填哪个。

在写完第一行代码后我们的工作就已经完成一大半了,接下来我们只需要输出我们想要的信息即可,在输出我们想要的结果时我们需要用到matcher的两个方法,matcher.find和matcher.group。matcher.find我们可以简单的理解为找到接下来可以匹配到的字符串,如果找到我们则打印此字符串;在matcher.group方法中有一个参数,此参数表示我们想要得到第几个括号里的信息,此括号是指Pattern.compile()方法里面的括号,因为我们想要得到第一个括号的内容,因此我们的参数为1,于是就有了我们的代码:

While(matcher.find()){

}

至此一个简单的正则表达式就有了,这样就可以得到我们想要得到的字符串。

再从头分析我们的代码,我们发现正则表达式其实也并不难,其本质上就是进行模式匹配,然而在进行匹配时我们有时候需要得到其他的信息,并不是只是数字,因此此时就要用到相对应的规则,在这里列出了平时我们比较常用的几个:

预定义的字符类:

\d数字: [0-9]

\D非数字: [^0-9]

\s空格符: [ \t\n\x0B\f\r]

\S非空格符: [^\s]

\w单词字符: [a-zA-Z_0-9]

\W非单词字符: [^\w]

表达次数的符号:

符号次数

* 0次或者多次

+ 1次或者多次

? 0次或者1次

恰好n次

从n次到m次

未完待续,欢迎持续关注本公众号,了解不一样的编程思维。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171218G0SL2Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券