正则表达式二:正则表达式元字符
二、正则表达式元字符
正则表达式由两种基本字符类型组成:普通文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。元字符是一个或一组代替一个或多个字符的字符。
根据功能元字符可分分类:字符匹配、匹配次数、定界符、分组及反向引用等。
1 字符匹配:
字符匹配的核心就是“[ ]”,匹配[]中任意一个字符,注意,只匹配一个字符。例如.[aoeiu]匹配任意一个元音字母,[0-9] 匹配任意一位数字,[a-z][0-9] 匹配由小写字母和一位数字构成的两位字符。
注:[:alnum:]等为POSIX字符类,整体指示字符串,[[:alnum:]]才表示对于要匹配字符的范围
元字符 |
作用 |
. |
匹配除换行符“\n”外的任意单个字符 |
[] |
匹配指定范围内的任意字符 |
[^] |
匹配指定范围外的任意字符 |
[:alnum:] |
字母和数字 |
[:alpha:] |
代表任何英文大小写字符,亦即A-Z,a-z |
[:lower:] |
小写字母 |
[:upper:] |
大写字母 |
[:black:] |
空白字符(空格和制表符) |
[:space:] |
水平和垂直的空白字符(比[:blank:]包含的范围广) |
[:cntrl:] |
不可打印的控制字符,\t,\n,\r,\s等 |
[:digit:] |
十进制数字 |
[:xdigit:] |
十六进制数字 |
[:graph:] |
可打印的非空白字符 |
[:print:] |
可打印字符 |
[:pumct:] |
标点符号 |
2 字符匹配次数
用在要指定次数的字符后面,用于指定前面的字符要出现的次数
元字符 |
作 用 |
* |
前一个字符匹配 0 次或任意多次 |
.* |
任意长度的任意字符 |
\? |
匹配其前面的字符0或1次 |
\+ |
匹配其前面的字符至少1次 |
[] |
表示可匹配查找的范围,匹配[]中任意一个字符,只匹配一个字符。例如.[aoeiu]匹配任意一个元音字母,[0-9] 匹配任意一位数字,[a-z][0-9] 匹配由小写字母和一位数字构成的两位字符 |
[^] |
匹配除[]中的字符以外的任意一个字符。例如,[^0-9] 匹配任意一位非数字字符,[^a-z] 匹配任意一位非小写字母 |
\ |
转义符,用于取消特殊符号的含义 |
\{n\} |
匹配前面的字符n次 |
\(n,\} |
匹配前面的字符至少n次 |
\{n,m\} |
匹配前面的字符至少出现 n 次,最多出现 m 次 |
3 定界符
元字符 |
作 用 |
^ |
匹配行首,例如^ab:匹配以ab开头的行 |
$ |
匹配行尾,例如67a$:匹配67a结尾的行 |
^pattern$ |
匹配pattern模式的行 |
^[[:space:]]*$ |
空行 |
\< 或 \b |
单词词首定界 |
\> 或 \b |
单次词尾定界 |
\<pattern\> |
匹配pattern的单词 |
4 分组及反向引用
分组:
用( )将一个或多个字符选择项构成一个整体匹配,相邻的选择项之间用|分隔。
( ) 表示捕获分组,( )会把每个分组里的匹配的值保存起来,多个匹配值可以通过数字n 来查看(n是一个数字,表示第n个捕获组的内容)。
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ..
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符,以此类推;
反向引用:
反向引用提供了查找重复字符组的简便方法,可以认为是再次匹配同一个字符组的快捷指令。对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。可以使用非捕获元字符 ?:、?= 或 ?! 来重写捕获,忽略对相关匹配的保存。
字符 |
说明 |
(expression) |
匹配字符串expression,并将匹配到的文本保存到自动命名的分组里 |
(?<name>expression) |
匹配字符串expression,并将匹配的文本以name进行命名。该名称不能包含标点符号,不能以数字开头 |
(?:expression) |
匹配字符串expression,不保存匹配的文明,也不给此组分配组号 |
(?=expression) |
匹配字符串expression前面的位置 |
(?!expression) |
匹配后面不是字符串expression的位置 |
(?<=expression) |
匹配字符串expression后面的位置 |
(?<!expression) |
匹配前面不是字符串expression的位置 |
(?>expression) |
只匹配字符串expression一次 |
关于正则表达式元字符掌握这4大类后对于正则表达式的处理就基本没问题了。
正则表达式二:正则表达式元字符相关推荐
- oracle元字符,oracle中正则表达式的基本元字符
前面我们介绍了oracle中正则表达式的基本元字符和常用的两个函数regexp_like和 regexp_instr.这里我们再继续介绍剩下的两个正则表达式函数regexp_replace和regex ...
- 大有可为的“正则表达式”(二)
5.3. 基本和扩展正则表达式 Unix支持两种的正则表达式的版本: (1)现代版本:扩展正则表达式(extended regular expression,ERE),属于IEEE1003.2标准, ...
- 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容
文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...
- 正则表达式:JAVA正则表达式运用
目录: 一.正则表达式简介 二.正则表达式符号的含义以及简单的例子 1.正则表达式符号含义 2.正则表达式符号对语言的支持 3.正则表达式一些特定的例子 3.1正则表达式应用--替换指定内容到行尾 3 ...
- javascript 正则表达式 转换 java 正则表达式_JavaScript 正则表达式【转】
一.JavaScript正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索 ...
- oracle手机正则表达式,oracle正则表达式函数 匹配 手机
文章介绍了关于oracle正则函数的一些用法,包括匹配等,Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的 文章介绍了关于oracle正则函 ...
- 正则表达式 (正则表达式括号的作用)
正则表达式之前学习的时候,因为很久没怎么用,或者用的时候直接找网上现成的,所以都基本忘的差不多了.所以这篇文章即是笔记,也让自己再重新学习一遍正则表达式. 其实平时在操作一些字符串的时候,用正 ...
- java 正则表达式 demo_JAVA正则表达式语法
JAVA正则表达式语法(转) 正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符").模式描述在搜索文本时要匹配的一个或 ...
- java replaceall正则表达式_正则表达式的规则及应用
第三阶段 JAVA常见对象的学习 正则表达式 (一) 正则表达式概述 (1) 简单概述 就是符合一定规则的字符串. (2) 常见规则 (3) 常见功能 //判断功能 正则表达式是非常强大的,我们通过几 ...
- php 正则表达式 菜鸟,正则表达式菜鸟教程.pdf
正则表达式菜鸟教程 正则表达式菜鸟教程 1开山篇教程 正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符 (例如,a 到 z 之间的字母) 和特殊字符 ...
最新文章
- pycharm远程和本地同时_pycharm远程开发之django配置
- Python3.5+selenium操作Chrome浏览器的简单实例
- ActionBarActionMode的理解,出现菜单栏
- vue 实现页面静态化
- C++总结笔记(二)面向对象
- 3D建模如何学习,小白6个月入门工作?3D建模要学多久才能接外包私活?
- 容器技术:华为云如何帮助企业落地Kubernetes
- server多笔记录拼接字符串 sql_前台传入多个参数(数组格式),拼接成字符串中间用逗号隔开,传入到sql中用in查询....
- Jenkins进阶系列之——08Jenkins纳入版本控制
- windows java环境搭建_Java环境搭建(Windows环境)-Fun言
- 云计算机玩端游,拒绝万元显卡 云电脑玩端游又爽又省钱
- Go 语言开发工具 LiteIDE x22 发布
- 深入理解计算机系统arch lab
- Node.js中的npm与包
- 解决js获取当前时间精确到秒并格式划成数字(20200712120610)
- python中得到26个字母
- 华硕vm510l装固态硬盘_华硕VM510L拆机换固态硬盘
- python 将单词分割成字母_拆分两个字母创建单词python 3
- 使用CSS绘制几何图形(圆形、三角形、扇形、菱形等
- 用java实现复数的_Java实现复数运算
热门文章
- gta5结局杀老崔我哭了_gta5大结局:你选谁死?杀老崔和三人行吵起来了,其实r星多作怪...
- Ext_基本表单_Ext.form.BasicForm
- SpringSecurity整合springBoot、redis——实现登录互踢
- [重点] 字典处理(工具)
- 冷门扫描工具——Xprobe2详细用法
- macOS Mojave 10.14.2 原版镜像
- 解析Amazon和Google语音平台之争的商业逻辑
- <C语言>如何使用C语言代码打印“心形”图案?
- postgresql encode函数
- 专利申请流程及费用,需要准备什么材料,已更新