正则表达式基础篇

正则表达式必知必会
正则表达式用处:搜索与替换
简单的开始:
1.匹配单个字符:
.匹配任何一个字符(除去换行符)
\加上一个特殊字符:如\\,\d,\w,
2.匹配一组字符:
[]不匹配任何字符,自用来定义一个字符集合;如[ab]:必须匹配a或b,可用来处理大小写问题[Aa],当然也可以用\i(SAS里面的);[0-9]匹配0到9的数字,[A-Z]匹配A到Z的英文字母;[A-Za-z0-9]表示A-Z和a-z和0-9;[^0-9]表示不匹配0-9的任意数字;若要匹配[]本身,需要反斜杠\[ \]
注:-连字符是特殊的元字符,但只能用在[]之间,在[]之外只能与-匹配,因此-不需要特殊匹配。
3.使用元字符:
元字符不用做元字符时,必须\转意,如\[、 \\
元字符分为两种:(1)匹配文本比如.(2)匹配正则表达式的语法要求的如:[]
匹配空白字符:\n:换行符;\r回车符;\t制表符[Tab键];在Window操作系统中需要\r\n\r\n来匹配两条记录中的空白行,在linux\Unix中是\n\n即可
匹配数字:\b任何一个数字字符相当于[0-9];\D任何一个非数字字符相当于[^0-9]
\w任何一个字母数字字符或者下划线相当于[A-Za-z0-9_];\W任何一个非字母数字字符或者下划线相当于[^A-Za-z0-9_]
匹配空白字符:\s任何一个空白;\S任何一个非空白字符
匹配十六进制:\0
匹配八进制:\0开头
4.重复匹配
+匹配一个或多个字符
*匹配零个或多个字符
?匹配零个或一个字符
{}匹配的重复次数 如\d{0,3}:0,1,2或3个数字;\d{3,}至少重复3次及以上的数字字符
注:* +都是贪婪型字符,匹配的结果是多多益善而不是适可而止,尽可能从文本的开头匹配到结尾,有时将多个匹配结果当成一个
但*? +? {n,}?是懒惰性表示方法,写法简单,找到一个匹配的即停止(这里容易误解,见P49页)
5.位置匹配
\b单词边界:如:the cat scatterted....,匹配cat:\bcat\b,这里的\b是匹配这样一个位置,位于一个能用来构成单词的字符和一个不能用来构成单词的字符;
\D不匹配单词的边界
^匹配字符串的开头位置

7.子表达式
()是元字符,将子表达式括起来
简化重复表达:(\d{1,3}\.){3}
避免误解:19|20\d{2} 与(19|20)\d{2}意义是不同的;因为|将左右两边当成完整的两部分
子表达式的嵌套
8.回溯引用:前后一致匹配
回溯连续匹配:
如:this is is a cat;
匹配:[ ]+(\w+)[]+\1
这里的\1是模式里的第一个表达式,\2表示模式里面的第二个表达式,上述将匹配同一个单词连续两次重复出现;
注:回溯引用只能引用模式里面的子表达式,用()括起来的;

时间: 2024-10-12 09:05:09

正则表达式基础篇的相关文章

0524.深入浅出理解iOS常用的正则表达式—基础篇[Foundation]

参考资料:cocoachina的zys475481075的文章 几个单词 Regular  ['regj?l?] adj. 定期的:有规律的 Expression [?k'spre?(?)n; ek-] n. 表现,表示 Regular expression 正则表达式 什么是正则表达式? 用一个描述字符串去验证另一个字符串是否符合描述字符串的特征.(不严谨,可以这么理解) 思考:比如表达式"12+",描述的意思是一个1和任意个2组成的字符串,那么'12'.'122'.'122'-.都

Linux正则表达式——基础篇

一.什么是正则表达式 简单地说,正则表达式就是处理字符串的方法,它是以行为单位进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. 正则表达式基本上是一种"表示法",只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理之用.例如:vi,grep,awk,sed 正则表达式的字符串表达方式依照不同的严谨度而分为基础正则表达式与扩展表达式,扩展表达式除了简单的一组字符串处理外,还可以做组的字符串处理.

linux 正则表达式基础篇

========  尖括号^ :例:^work:表示以work开头的内容========  $:            work$: 表示以work结尾的内容 ========  ^$:表示空行,不是空格 ========  . 代表且只能代表任意一个字符========  \ 代表转意字符(让代表特殊意义的字符返回原形)例子: \.:只表示小数点========  * 重复0个或者多个前面的字符,不代表所有了========  .* 匹配所有的字符.========  ^.* 任意多个字符开头

正则表达式之基础篇

今天看了鸟哥的linux私房菜,关于正则表达式:简单做笔记如下: [:upper:] 大写字母 A-Z [:lower:] 小写字母 a-z [:digit:]  数字 0-9 [:alpha:] 字母   A-Z a-z [:alnum:] 字母和数字 A-Z a-z 0-9 首先介绍几个字符: ^ 表示行首  (^在方括号[ ]内表示不包含,在[ ]外表示行首!!!) $ 表示行尾 [] 无论括号内有几个字符,只能代表 "其中一个"!!! { } 表示字符出现的次数,由于花括号本身

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

Python基础篇(八)

key words:私有变量,类静态变量,生成器,导入Python模块,r查看模块可以使用的函数,查看帮助信息,启动外部程序,集合,堆,时间模块,random模块,shelve模块,文件读取等 >>> class Rectangle: ...     def __init__(self): ...         self.__width = 0 ...         self.__height = 0 ...     def setSize(self,width,height): .

awk(一)基础篇

上一篇总结了下sed的用法,这一篇玩玩sed的好基友awk,学完它俩,以后就再也不用怕处理文本文件了. awk其实和sed处理过程差不多,都是面向字符流的.sed和awk都相当于是一个加工厂,输入的文本行,相当于原材料,原材料在工厂中经过一系列处理.然后输出成品. awk和sed不同的是,awk更加的强大了,基本上可以说大多数sed能够实现的功能,awk都可以实现.... 但是实现相同的功能,大多情况下sed的过程更加的简洁吧. 当然awk还有着更多的功能,awk本身就是一门类C的语言了,有变量

刨根究底正则表达式之二——正则表达式基础

正则表达式基础 一.正则表达式构成 1. 正则表达式中的语法元素,从是否具有特殊含义的角度进行分类,可分为下列两大类.共五种语法元素: 1)不具有特殊含义的语法元素 (1)  字面字符(文本字符):不具有特殊含义的单个字符,代表字符自身(即字符字面值): (2)  普通转义序列:由转义前导符\后跟元字符所组成的字符序列,将具有特殊含义的元字符,转义为(即转换为)不具有特殊含义的字符本身(即字符字面值): 2)具有特殊含义的语法元素 (1)  元字符:具有特殊含义的单个字符,包括:\.(.).[.