当前位置:网站首页>如何在正则表达式里表达可能存在也可能不存在的内容?
如何在正则表达式里表达可能存在也可能不存在的内容?
2022-08-02 03:26:00 【rockage】
开始
- 其实很简单, 在正则里将一些不确定的内容用括号包裹起来,再后面再加一对花括号即可.
- 看例子:
start
1:hello
2:my
3:world
end
start
1:we
3:are
4:champions
end
- 以上这段内容, start 和 end 里包裹了一些东西, 第一个段落里有3行, 编号为:1 2 3, 第二个段落也是3行,但是编号变成了:1 3 4 .
- 也就是说: 编号1 和 3 是确定的, 编号 2在第一段里存在,在第二段中不存在, 编号 4 则相反, 第一段没有, 第二段有.
- 碰到这种不确定的情况,我们就把整个不确定的内容用() 包裹起来,然后在后面加一对花括号, 例如: ( xxx ){0,1} 表示 xxx 这个字符串,有可能出现, 也有可能不出现.
- 接着看我们上面那个例子,我们编一个正则读取每个编号后面的英文单词:
start[\r\n]1:(.+?)[\r\n](2:(.+?)[\r\n]){0,}3:(.+?)[\r\n](4:(.+?)[\r\n]){0,}end
- [\r\n] 代表换行
- (2:(.+?)[\r\n]){0,} 看到了吗, 编号 2 整个用() 括起来了,后面的{0,1} 表示它可能出现0次,也可能出现 1 次, 同样的, 编号 4 也是这么处理的.
- 问题解决!
后记
- 用这种方法你无需担心match值不存在的问题, 比如说第一个段落没有编号4, 但是系统还是会给你返回一个编号为4, 值为 null 的返回值. 这有点类似于"访问一个不存在的数据元素" 和 “访问一个值为空的数组元素” 一样, 前者有可能导致程序报错, 但后者处理起来就容易多了.
- 花括号{} ,是个好工具, 特别在一些不确定的场合, 比如: \s{1,} 表示\s (空格) 有可能出现1次到无限次, 这用于表达不确定空格次数的场合就很合适了.
边栏推荐
- Alfa: 1 vulnhub walkthrough
- hackmyvm: juggling walkthrough
- 强化学习笔记:DDPG
- 成本会计的概念、产品成本核算的要求、产品成本核算的对象与成本项目、产品成本的归集和分配(可能考判断)、产品成本计算方法 (三种:产品的品种(品种法),批次(分批法),步骤(分步法))
- 3000字入门图神经网络
- (4) Function, Bug, Class and Object, Encapsulation, Inheritance, Polymorphism, Copy
- 会计凭证概述、原始凭证、原始凭证的种类、原始凭证的基本内容、原始凭证的填制要求、原始凭证的审核
- (5) Modules and packages, encoding formats, file operations, directory operations
- Mysql创建索引
- DNS详解
猜你喜欢
ES6 three-dot operator, array method, string extension method
重点考:从债劵的角度来看交易性金融资产
CTF-网鼎杯往届题目
PHP deserialization vulnerability
PHP反序列化漏洞
ES6 array extension methods map, filter, reduce, fill and array traversal for…in for…of arr.forEach
GreenOptic: 1 vulnhub walkthrough
记账凭证的种类、记账凭证的基本内容、记账凭证的填制要求、记账凭证的审核
hackmyvm-hopper预排
链动2+1模式开发系统
随机推荐
(3) 字符串
Activity
库存现金、现金管理制度、现金的账务处理、银行存款、银行存款的账务处理、银行存款的核对
学IT,找工作——反转链表
一个网络安全小白鼠的学习之路——nmap的基本使用
A network security guinea pig's learning path - scripting of advanced usage of nmap
【一句话攻略】彻底理解JS中的回调(Callback)函数
二舅为什么能刷屏?这三件事对企业公关的启示
uniapp | Compilation error after updating with npm update
借贷记账法下的账户结构、借贷记账法的记账规则、借贷记账法下的账户对应关系与会计分录
会计账簿、会计账簿概述、会计账簿的启用与登记要求、会计账簿的格式和登记方法
PHP Foundation March Press Announcement Released
hackmyvm: controller walkthrough
The CTF introduction of PHP file contains
广告电商「私域打工人」职业前景:你离月薪6万,还差多远?
DNS详解
解密:链动2+1的商业模式
Stable and easy-to-use short connection generation platform, supporting API batch generation
php函数漏洞总结
PALISADE:CKKS的使用