正则表达式及工具

前言:正则表达式,又称正规表示法、常规表示法。(Regular Expression):正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言(PHPC#、Java、C++、Objective-c、Swift、VB、JavascriptRuby以及Python)都支持利用正则表达式进行字符串操作。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

简单来说:正则表达式可以理解为通过描述某种规则达到某种模式匹配,这种规则称为正则表达式。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式的特点是:

1. 灵活性、逻辑性和功能性非常的强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂。

正则表达式由一些普通字符和一些元子符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。eg:在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,它可以匹配"testing"和"testing123"等字符串,但是不能匹配"Testing"。(未包含元子符)

一个正则表达式由三部分组成:字符类(描述字符串包含字符特点),数量限定符(字符串中相应字符个数),位置限定符(字符串中字符位置特点)。

规定一些特殊语法表示字符类、数量限定符和位置关系,然后将这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)。

注:注意正则表达式参数用单引号括起来了,因为正则表达式中用到的很多特殊字符在Shell中也有特殊 含义(例如\),只有用单引号括起来才能保证这些字符原封不动地传给grep命令,而不会被Shell解释掉。

1.grep:文本过滤工具。它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。正则表达式在grep中用来查找符合模式的字符串,grep找的是包含某个模式的行。

egrep相当于grep -E,表示采用Extended正则表达式语法。 grep的正则表达式有Basic和Extended两种规范。二者的区别主要在于对上图中特殊字符的解析。

对于Basic模式来说,字符?+{}|()应解释为普通字符,要表示上述特殊含义则需要加\转义。

   而对于Extend模式来说,字符?+{}|()应解释为特殊字符,要表示普通字面含义则需要加\转义。

具体例子:

IP地址的合法性判别

最终grep匹配合法IP表达式

grep 选项测试

时间: 2024-10-11 11:56:48

正则表达式及工具的相关文章

C#正则表达式开源工具,为.net开源绵尽薄力

先交代一下背景,最近工作中经常用到正则表达式,而正则表达式这个东西我个人觉得很鸡肋,不用吧,有些功能实现起来会很麻烦.用吧,又不是说工作中经常用到,只是有时候有些需要求用到而已.但是正则表达式只要一段时间不用,就会被遗忘,甚至是忘的一干二净.为了一定程度上解决这个鸡肋的问题,就有了这篇博客和我打算写的这个开源的正则表达式验证工具的想法.关于正则网上的资料其实已经很多了,之所以还写这篇博客只是为了记录一些现在或者以后工作中可能会用到的正则,然后分享出来,同时也是希望为.net开源做一些事情. v0

linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html以此为例: cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 此时若test.sh 不存在,报错信息不会输出到屏幕中,而是转入 /dev/null中,如

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证

C# 正则表达式测试工具与分享窗体自适应类

放假刚回来,自己打算写一个正则表达式的测试工具,因为上次在网上用的一个在线正则表示测试工具就 没有很好的服务自己的,所以才有了现在的想法,想写一个C#开发者用的正则表达式测试工具!期间由于最大化时控件不能同时放大, 所以就找出以学习的时候用的一段代码,原作者是谁我自己也不知道,我把代码分享出来,需要的 可以拿来用!原创作者可以消息我!需要这个工具的也可以留下邮箱! 下面是工具的截图和窗体放大的效果图! 下面是控件适应的代码,我把原来的代码简单的放到了类里面,以便可以方便的使用,可能有bug! 1

正则表达式及工具程序grep,egrep

写在前面: 如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 什么是正则表达式?     见名知意,正则表达式也就是符合某种规则的表达式,它是由特殊字符和其他字符组成的字符串.要想以正则表达式的规则来处理字符串,就得需要使用支持正则表达式的工具程序(有时也被称为正则表达式引擎)才行,例如grep,egrep,vi,sed,awk等,用来从/boot/grub/grub.conf文件中提取结果的命令如下图所示. 基础正则表达式之工具程序grep     元

java HTML字符串正则表达式使用工具类

原文:java HTML字符串正则表达式使用工具类 代码下载地址:http://www.zuidaima.com/share/1550463453416448.htm HTML相关的正则表达式工具类 包括过滤HTML标记,转换HTML标记,替换特定HTML标记 package com.zuidaima.common.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: H

正则表达式-grep工具常见选项的使用

正则表达式:就是规定一些语法表示字符类.数量限定符.和位置限定符关系,再和普通字符共同来表示一个模式,用某种模式来匹配一类字符串,许多程序设计语言都支持正则表达式匹配 一个正则表达式的三个要素和一些特殊字符 先了解一下grep工具: grep:文本过滤工具.它能使用正则表达式搜索文本,并把匹配的行打印出来.正则表达式在grep中用来查找符合模式的字符串,grep找的是包含某个模式的行. egrep相当于grep -E,表示采用Extended正则表达式语法. grep的正则表达式有Basic和E

shell下正则表达式与其工具grep

一.grep相关知识 1.grep      grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 2.grep工作原理      grep有两种模式:Basic和Extend模式.     在Basic模式下,命令直接grep ,其中的?.+.{}.|.()都被解释为普通字符,如果要使用其的特殊意义,就必须

Java中的日历类/集合类/数学类/正则表达式/数组工具类等的常用方法与基本功能

一. Arrays 针对数组操作的工具类,提供了一些针对数组排序和二分搜索的方法.常用方法:1.public static String toString(int[] a):将int类型的数组转换成字符串.转换成字符串后输出形式: ([元素1,元素2,元素3...]),Arrays在底层重写了toString方法.2.public static void sort(int[] a):对指定的 int 型数组按数字升序进行排序.3.public static int binarySearch(in