正则表达式

简介: 正则表达式

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

源码:

实验结果

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

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

While(matcher.find()){

System.out.println(matcher.group(1));

}

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

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

预定义的字符类 

\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
{n,m} n次到m

目录
相关文章
|
6月前
|
数据安全/隐私保护
正则表达式小结
正则表达式小结
59 0
|
2月前
|
测试技术
|
5月前
|
索引 Python
正则表达式详解
正则表达式详解
|
5月前
正则表达式2
正则表达式
|
新能源 Java Linux
你必须掌握的常用正则表达式大全
你必须掌握的常用正则表达式大全
1513 1
你必须掌握的常用正则表达式大全
|
数据采集 机器学习/深度学习 移动开发
我学会了,正则表达式
爬虫是**非常的**的强大,相信不少朋友都有所耳闻,它帮助我们更快地“获得”我们所要关键数据。那么,它怎么知道我们要需要什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。
104 0
我学会了,正则表达式
|
机器学习/深度学习 C++ Windows
|
Web App开发 JavaScript 前端开发
正则表达式小记
什么是正则表达式 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、replace、search 和 split 方法。
1216 0
|
Perl 运维 Linux
漫谈正则表达式
一、概述 正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。
966 0