当前位置:网站首页>如何在正则表达式里表达可能存在也可能不存在的内容?
如何在正则表达式里表达可能存在也可能不存在的内容?
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次到无限次, 这用于表达不确定空格次数的场合就很合适了.
边栏推荐
- The shooting range that web penetration must play - DVWA shooting range 1 (centos8.2+phpstudy installation environment)
- (4) Function, Bug, Class and Object, Encapsulation, Inheritance, Polymorphism, Copy
- 【泰山众筹】模式为什么一直都这么火热?是有原因的
- How to log in to Alibaba Cloud server using the admin account
- MOMENTUM: 2 vulnhub walkthrough
- 一次代码审计的笔记(CVE-2018-12613 phpmyadmin文件包含漏洞)
- ES6 three-dot operator, array method, string extension method
- Masashi: 1 vulnhub walkthrough
- (2) 顺序结构、对象的布尔值、选择结构、循环结构、列表、字典、元组、集合
- Pycharm packages the project as an exe file
猜你喜欢
随机推荐
Alfa: 1 vulnhub walkthrough
文件包含漏洞
[sebastian/diff] A historical change extension library for comparing two texts
解密:链动2+1的商业模式
Scrapy爬虫遇见重定向301/302问题解决方法
12. What is JS
【泰山众筹】模式为什么一直都这么火热?是有原因的
Phonebook
成本会计的概念、产品成本核算的要求、产品成本核算的对象与成本项目、产品成本的归集和分配(可能考判断)、产品成本计算方法 (三种:产品的品种(品种法),批次(分批法),步骤(分步法))
PHP反序列化漏洞
hackmyvm: juggling walkthrough
17. JS conditional statements and loops, and data type conversion
同态加密:CKKS原理之旋转(Rotation)
The CTF introduction of PHP file contains
Solve the problem of Zlibrary stuck/can't find the domain name/reached the limit, the latest address of Zlibrary
命令执行漏洞
[campo/random-user-agent] Randomly fake your User-Agent
Offensive and defensive world - novice MISC area 1-12
最简单的FRP内网穿透教程
重点考:从债劵的角度来看交易性金融资产









