当前位置: 首页 > news >正文

正则表达式---元字符

简介

正则表达式分为两种语法:POSIX标准的语法Perl语法

正则表达式的POSIX规范,分为基本型正则表达式(Basic Regular Expression, BRE)扩展型正则表达式(Extended Regular Expression,ERE) 和SRE(Simple Regular Expression)已经被弃用(deprecated,因为BRE和SRE都可以backward compatibility)。

grepvised都属于BRE,元字符(metacharacter)需要转译(例如:在BRE中(){}需要指定为\(\)\{\}才可以使用,但是在ERE中则不需要进行转译)

egrepawk属于ERE,元字符不需要转译

一个正则表达式通常称为一个模式(pattern)。

HINT! Perl语法被广泛使用!在grep中使用Perl语构的regex:grep -P

Basic concepts

1. Boolean “or”

|

2. Grouping

()

3. Quantification

+

?

*

{n}

{min,}

{,max}

{min,max}

4. Wildcard

.

PCRE(Perl Compatible Regular Expression)

Perl兼容正则表达式,元字符介绍

MetacharacterDescriptionExample
\将下一个字符标记为一个特殊字符(File Format Escape)或一个原义字符(Identity Escape,有12个“^$()*+?.[\{”)等。n”字符匹配n字符,“\n”匹配一个换行符。
"\\“匹配一个“\
\("匹配一个“(
^匹配以某个字符串开始的行^abc
匹配abc
不匹配eabc
$匹配以某个字符串结束的行abc$
匹配ef abc
不匹配abc ef
*匹配前面的子表达式0次或多次
+匹配前面的子表示1次或多次
?匹配前面的子表示0次或1
{n}匹配no{2}
可以匹配到food中的两个o
不能匹配到Bob中的一个o
{n,}至少匹配n次
{n,m}匹配最少n次,最多m
?非贪心量化(Non-greedy quantifiers)。
其跟随在其他重复修饰符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。
.匹配除"\r""\n"之外的任何单个字符
(pattern)捕获组(capturing group)。
匹配pattern,并获取这一匹配的子字符串。该子字符串用于后向引用。
(\(\w+\))\s\1
匹配(hello) (hello) world中的(hello) (hello)
(?:pattern)非捕获组(non-capturing group)。
匹配pattern,不获取这一匹配的子字符串,非获取匹配。即不存储匹配的子字符串用于后向引用
(?=pattern)正向肯定预查(look ahead positive assert)。
在匹配pattern处,开始匹配查找字符串,这是一个非捕获匹配。
Windows(?=95|98|NT|2000)
匹配Windows2000中的Windows
不匹配Windows3.1中的Windows
(?!pattern)正向否定预查(negative assert)。
在不匹配pattern处查找匹配字符串。
industr(?!y)
匹配industries
不匹配industry
(?<=pattern)反向(look behind)肯定预查。
与正向肯定预查相似,只是方向相反。
非捕获匹配。
(?<=95|98|NT|2000)Windows
能匹配到2000Windows中的Windows
不能匹配到Windows2000中的Windows
(?<!pattern)反向否定预查。
与正向否定预查相似,只是方向相反
(?<!95|98|NT|2000)Windowsbr/>能匹配到3.1Windows
不能匹配到2000Windows
x|y没有包围在()里,范围是整个正则表达式
[xyz]字符集合(character class)。匹配包含的任意一个字符。[abc]
可以匹配plain中的a
可以匹配到branch中的"b" “a” “c
[^xyz]排除型字符集合(negated character classes)。匹配未列出的任意字符
[a-z]字符范围。可以匹配到不在“a”到“z”范围内的任意字符
[^a-z]
\d匹配一个数字字符。等价于[0-9]
\D匹配一个非数字字符。等价于[^0-9]
\s匹配任何空白字符,包括空格,制表符,换页符等。等价于[\f\n\r\t\v]
\S匹配任何空白字符。等价于[^\f\n\r\t\v]
\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9]
\W匹配包括下划线的任何单词字符。等价于“[^A-Za-z0-9]

Reference

维基百科:正则表达式

http://www.lryc.cn/news/476909.html

相关文章:

  • 数据库Redis篇
  • 在区块链技术中,什么是权益证明(PoS)?
  • Spring Boot——日志介绍和配置
  • Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)
  • 【真题笔记】16年系统架构设计师要点总结
  • 2024 CSS保姆级教程二 - BFC详解
  • Knowledge-refined Denoising Network for Robust Recommendation
  • 轴流风机和后倾式风机的安装要求
  • 代码笔录1
  • 强网杯2024 Web WP
  • 《双指针篇》---盛最多水的容器_Java(中等但简单)
  • Linux: network: 环境:网络burst的一个原因,虚拟机感染病毒导致,外部网络设备太忙
  • idea使用Translation插件实现翻译
  • [OS] sys_mmap() 函数+
  • 轧钢机辊道多电动机传动控制系统
  • 使用 Nginx 部署 Python 项目
  • [笔记] SQL 优化
  • 【InfluxDB】InfluxDB 2.x基础概念及原理
  • .net Core 使用Panda.DynamicWebApi动态构造路由
  • Spring框架和Spring Boot框架都使用注解来简化配置和提高开发效率,但它们之间存在一些区别
  • 从数据提取到管理:TextIn平台的全面解析与产品体验
  • 2024 Rust现代实用教程 Error错误处理
  • android 逆向破解360加固(MT管理器反编译)
  • 使用 SSH 蜜罐提升安全性和记录攻击活动
  • 无人机拦截捕获/直接摧毁算法详解!
  • 后端eclipse——文字样式:UEditor富文本编辑器引入
  • thinkphp6 redis 哈希存储方式以及操作函数(笔记)
  • 「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
  • 【嵌入式】STM32中的SPI通信
  • 后端:Spring、Spring Boot-配置、定义bean