正则表达式在大量的文本文件中对用户所关心的数据进行匹配有着十分重要的作用。

正则表达式的可以通用于SQL语句中、java脚本以及python脚本中。

正则式的语法比较统一而且易学,但是将正则用于实际的工作环境中,

还是相当有难度的,因为它的灵活度和变化都是很大的。

所以最好的掌握正则式在实际应用中的编写,而非死记硬背一些条条框框的规则。

本文的重点是介绍正则是的语法规则以及如何使用java来编写一个测试正则表达式的小程序。

这样的话,我们就可以将每次学到的正则语法规则应用于实际操作中去,

随时检验和修改自己的正则表达式了。

对于正则表达式的定义是这样的:

正则表达式(regular  expressions)是一种描述字符串集的方法,是以字符串集中的共有特征为依据的。

使用正则表达式可以用于搜索、编辑以及操作文本和数据。

在java中的java.util.regex这个包的下面有相关的类

Matcher和Pattern已经实现了对正则表达式的规范化描述,以及测试匹配工作。

首先介绍一下,使用java语句来编写一个小程序,

以便于实时检查所写的正则式是否可以达到搜索、匹配输入各种类型文本的目的

下面是LZ编写的测试源代码

有一点值得留意的是:

1.对于//s?这种需要进行转义处理的字符串,

在这个小程序中是无需进行转义处理的,这应该是java的regex中的相应类在实现的时候已经进行预处理的原因吧:

总之//s?在程序中只需要写/s?就可以,如果仍然写//s?的话,原本按照正则表达式写的语句可以检查到的字段,

会显示检查不到的 。

2.另外值得注意的就是,在输入正则表达式的时候,除了必要的汉字匹配需要使用中文输入法之外,

其余全部应该使用纯英文的输入格式。

/** the coding below is used to check the regex you write* after running could get the results you want*/package regex_test;import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) throws IOException{String regexString;String checkText;BufferedReader br = new BufferedReader(new  InputStreamReader(new BufferedInputStream(System.in)));while(true){System.out.print("\n 请输入您的正则表达式:  \n");regexString = new String(br.readLine());
            Pattern pattern = Pattern.compile(regexString);
             System.out.print("请输入您所要搜索、匹配的测试文本:  \n");
            checkText = new String(br.readLine());
            Matcher matcher = pattern.matcher(checkText);
boolean found = false;
while(matcher.find()){                  System.out.println(" 输入的文本:  \"" + checkText+

                                   "搜索的匹配字段:\"" +matcher.group()+

                                   " \"起始位序 "+ matcher.start()+

                                   " 结束位序  "+matcher.end()+".\n");

                  System.out.println("使用正则表达式:\" "+regexString+             " \" 可以在输入文本中搜索得到匹配字段\n\n");   

                 found = true;}//while_innerif(!found){System.out.println("正则表达式\" "+regexString+"\" 不能在测试文本中搜索到字段:\n ");}}//while_outer}//main}//Main_class

下面简单介绍一下,正则表达式的简单语法:

正则式所识别的所有元字符有:

() [] {} \ ^ $ | ? * + . -

有两种方法可以将元字符强制转换为普通字符:

1.在元字符前面加上 \   反斜线这个字符。

2.把需要转换为普通字符的字符串放置到\Q   \E之间即可。

对于字符的一些基础表达式的说明:

[abc] : 表示的是在匹配字符串中只要有 a 或是b 或是c 就会实现匹配成功

当然这个是简单的字符,如果是字符串的话需要这么写:

[cat|bat|rat]:这个表示的意思就是,如果输入的待检查文本中只要有

cat,bat,rat其中的一个就会匹配成功。

[^abc]: 这个表示的是,如果在输入的待检查文本中只要没有除了a或b或c

一个,就说明匹配成功。

[a-zA-Z]: 如果带匹配的字符出现在[a,z]或是[A,Z]之间,就说明匹配成功;

其中区域端点a,z,A,Z 也算在内。

[a-d[m-p]]:这种表示方法等同于[a-dm-p],解释同上,

从某种角度上来说,这是一种对两个集合[a-d]和[m-p]并集的处理,

也就是说待检查匹配的字符如果是出现在a-d 或是 m-p之间的字符,

那么此次匹配是成功的。

[a-z&&[def]]: 这个正则式描述的是,输入的字符如果在a到z之间并且也同时是

d e f 三个字符串中的一个的话,那么此次匹配检测成功,

但是这个例子举得有一点特殊,

因为这个&&从集合的角度上来说是去两个集合的交集。

但是这个例子所选取的两个集合刚好后者是前者的子集,

所以实际上改正则表达式等价于[def]

[a-z&&[^bc]]: 除了b 和c两个字符之外,a到z的所有字符

相当于差集,而^bc相当于对b或c去反,

而或去反就相当于^b & ^c,即二者的非去并集。

所以整体上来看是:只要字符是

去掉 b且去掉c 的a到z的任意一个字符,该匹配都是成功的。

[a-z&&[^m-p]]: 同样也是差集,描述的是带匹配的字符。

如果是a到z,并且不包括m到p的,任意字符,那么匹配成功。

也相当于[a-lq-z]这种的并集的表示方法。

关于预定义字符类:

.:可以用来匹配任何字符

\d: 是数字字符[0-9]

\D: 这个描述的是非数字字符:[^0-9]

\s: 描述的是空白字符,只要是[\t\n\x0B\f\r]这里面的都可以。

\w:这个是用来描述单词字符的:[a-zA-Z_0-9]

\W: 这个是用来描述非单词字符的:[^\w]

目前,LZ暂时仅用到这些,如果以后用到其他的表达式在往上面填充吧....

转载于:https://www.cnblogs.com/inuyasha1027/p/regex_introduce.html

正则表达式——(一)相关推荐

  1. 通过正则表达式校验手机号码,拿走即用!

    校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...

  2. Linux shell 学习笔记(15)— shell 正则表达式

    1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...

  3. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册

    前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...

  4. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  5. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  6. 正则语法完全正则表达式手册_语法格式重点

    20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...

  7. 正则表达式 - 语法

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 例如: r ...

  8. 正则表达式中的\.表示什么意思

    \ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.

  9. ?:在正则表达式中什么意思

    "?:"非获取匹配,匹配冒号后的内容但不获取匹配结果,不进行存储供以后使用. 单独的"?":匹配前面的子表达式零次或一次. 当"?"紧跟在任 ...

  10. 关于正则表达式 \1 \2之类的问题

    我们创建一个正则表达式 var RegExp = /^(123)(456)\2\1$/; 这个正则表达式匹配到的字符串就是 123456456123 创建另外第二正则表达式 var RegExp1 = ...

最新文章

  1. mysql删除开放用户权限
  2. 由String.equals()方法引起的一系列思考
  3. 手动建立Mysql表实体类技巧
  4. 深入浅出 Linux 惊群:现象、原因和解决方案
  5. 自我审视记录本_春天重新审视战略模式
  6. android 点击选择文件夹,Android----弹出框选择文件夹目录以及启用新Task打开文件_IT168文库.pdf...
  7. 2019年总结人工智能未来发展趋势
  8. C#LeetCode刷题之#404-左叶子之和​​​​​​​​​​​​​​(Sum of Left Leaves)
  9. python 函数可以作为容器对象的元素_14、函数对象和闭包
  10. python降维可视化 自编码_如何使用自动编码器可视化降维? (Python | TensorFlow)...
  11. Lapsus$ 组织攻击很多大厂都在合作的软件咨询公司 Globant
  12. ModuleNotFoundError: No module named ‘keras.api‘解决
  13. 主流编程语言的特点分析
  14. python解析mht文件_实现MHT文件格式的解析和内容抽取
  15. 奔梦向前-web前端开发工具-简称DW软件适合写网页制作代码-2020-04-25
  16. 程序员怎么留住健康?
  17. 详解美股中的几种交易单-限价单、市价单、止损单、止损限价单、跟踪止损单
  18. 上证指数(000001)股票历史数据,下载上证指数(000001历史数据
  19. 使用qq邮箱进行服务器邮件代发
  20. 区块链中的记账权问题

热门文章

  1. layui使用弹出层 关闭后弹层的内容又显示出来
  2. Qt文档阅读笔记-QML RotationAnimation官方解析及实例
  3. android led灯框架_LED面板灯的特点:应用领域、产品结构与产品分类
  4. oracle触发器无效且,oracle创建触发器成功但是插值失败
  5. docker mysql数据库初始化_如何在Mysql的Docker容器启动时初始化数据库
  6. java反应器构型,反应器结构及工作原理现用图解.doc
  7. post多个参数_如何使用Arjun v1.3挖掘HTTP参数
  8. 深入理解计算机系统 相关课程,深入理解计算机系统
  9. java excel 超链接_Java 编辑、删除Excel中的超链接
  10. bulk of the 用法_代词的用法详解:第三部分(不定代词)