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

正则表达式使用指南(内容详细,通俗易懂)

正则表达式使用指南

常用匹配符

匹配特定字符

[格式]
<字符>
[示例]
a(?#匹配字符a)
b(?#匹配字符b)
c(?#匹配字符c)

匹配单个任意字符

.

匹配特定字符串

[格式]
<字符串>
[示例]
abc(?#匹配字符串abc)

匹配单个大写字母

[A-Z]

匹配单个小写字母

[a-z]

匹配单个数字

[0-9]
\d

匹配单个空白符

\s

匹配单个非空白符

\S

匹配单个大小写字母和数字

\w
[0-9]|[a-z]|[A-Z]

匹配单个枚举字符

[cxk](?#匹配单个字符,该字符必须是中括号中含有的字符)

匹配行开头的正则表达式

[格式]
^<表达式>
[示例]
^abc(?#匹配行开头的abc字符串)

匹配行结尾的正则表达式

[格式]
<表达式>$
[示例]
[0-9]$(?#匹配以行结尾的数字)

匹配零到多个任意字符

[格式]
<字符>*
[示例]
a*(?#匹配零到多个字符a)

匹配一到多个任意字符

[格式]
<字符>+
[示例]
a+(?#匹配一到多个字符a)

匹配零到多个任意表达式

[格式]
(<表达式>)*(?#当要以一个表达式为整体时,需要用小括号括起来)
[示例]
([0-9]|[a-z])*(?#匹配数字或小写字母零到多个)

匹配一到多个任意表达式

[格式]
(<表达式>)+(?#当要以一个表达式为整体时,需要用小括号括起来)
[示例]
([0-9]|[a-z])+(?#匹配数字或小写字母零到多个)

匹配特殊含义字符

[格式]
\<特殊含义字符>(?#当要以一个表达式为整体时,需要用小括号括起来)
[示例]
(?#匹配特殊含义字符.)
\.
[.]

(?#匹配特殊含义字符*)
\*
[*]

(?#匹配特殊含义字符\)
\\
[\\]

特殊含义字符

^

匹配开头位置。

$

匹配结尾位置。

()

标记一个表达式的开始和结束位置。即把一个表达式看作一个整体。

+

匹配前面的子表达式一次或多次。

*

匹配前面的子表达式零次或多次。

[]

用于枚举字符。

|

或运算。用于连接多个表达式。
提问: 为什么正则表达式中没有与逻辑?
答: 在正则表达式中,没有直接的与运算符是因为正则表达式的匹配逻辑已经隐含了与运算的概念。例如:

如果你有两个正则表达式 A 和 B:

A: [0-9]+(匹配一个或多个数字)

B: \w+(匹配一个或多个小写字母

既要满足A又要满足B,那就可以将其化简为一个表达式,[0-9]+

{}

用于指定匹配次数。

[格式]
<表达式>{<最小值min>,<最大值max>}(?#匹配一个表达式最少min次,最多max次)
<表达式>{<最小值min>,}(?#匹配一个表达式最少min次,最多无数次)
<表达式>{<num>}(?#匹配一个表达式最少num次,最多num次)
[示例]}(?#示例字符串123abc456ed f789 111 aaaa)
a{1,3}
a1,3}
a{1}

\

可以把特殊字符变成普通字符。

?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。

.

匹配除换行符 \n 之外的任何单字符。

\b

匹配一个单词边界,即字与空格间的位置。

\B

非单词边界匹配。

\cx

匹配由x指明的控制字符。

\f

匹配一个换页符。

\n

匹配一个换行符。

\r

匹配一个回车符。

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

\S

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

\t

匹配一个制表符。等价于 \x09 和 \cI。

\v

匹配一个垂直制表符。等价于 \x0b 和 \cK。

非贪婪限定符

非贪婪限定符(Non-greedy Quantifiers)是正则表达式中的一种特殊语法,用于控制匹配的方式。它们允许在匹配时尽可能少地获取字符,以避免贪婪匹配。

在正则表达式中,通常使用 *+?{} 等限定符来指定匹配的次数。默认情况下,这些限定符是贪婪的,即它们会尽可能多地匹配字符。

例如,考虑以下正则表达式:

  • .*:匹配任意数量的任意字符。

如果应用这个正则表达式到字符串 “Hello World” 上,它将匹配整个字符串,因为 .* 是贪婪的,会尽可能多地匹配字符。

为了避免贪婪匹配,可以在限定符后面添加一个问号 ?,将其转换为非贪婪限定符。

以下是常见的非贪婪限定符:

  • *?:匹配前面的表达式零次或多次,尽可能少地匹配字符。
  • +?:匹配前面的表达式一次或多次,尽可能少地匹配字符。
  • ??:匹配前面的表达式零次或一次,尽可能少地匹配字符。
  • {n,m}?:匹配前面的表达式至少 n 次、最多 m 次,尽可能少地匹配字符。

例如,使用非贪婪限定符的正则表达式 .*? 将只匹配尽可能少的字符,直到遇到下一个匹配项或字符串的结尾。

非贪婪限定符在处理需要精确匹配的情况下特别有用,以避免匹配过多的字符。

希望这个解答对你有所帮助!如果你还有其他问题,请随时提问。

练习题

匹配一个两位数的数字

测试用例

  • 用例: 09 结果: 不匹配
  • 用例: 19 结果: 匹配
  • 用例: 10 结果: 匹配
  • 用例: 99 结果: 匹配
  • 用例: 199 结果: 不匹配
    答案
^([1-9][0-9]?)$
^([1-9][0-9]{0,1})$
匹配一个三位数的数字

测试用例

  • 用例: 09 结果: 不匹配
  • 用例: 19 结果: 不匹配
  • 用例: 10 结果: 不匹配
  • 用例: 99 结果: 不匹配
  • 用例: 199 结果: 匹配
  • 用例: 099 结果: 不匹配
  • 用例: 666 结果: 匹配
  • 用例: 1234 结果: 不匹配
    答案
^([1-9][0-9]{2})$

http://www.kler.cn/news/327223.html

相关文章:

  • YOLOv8改进 - 注意力篇 - 引入SCAM注意力机制
  • 【2025】基于Spring Boot的智慧农业小程序(源码+文档+调试+答疑)
  • plt绘画三维曲面
  • Android OTA升级
  • excel快速入门(二)
  • Redis缓存技术 基础第二篇(Redis的Java客户端)
  • Ingress Gateway 它负责处理进入集群的 HTTP 和 TCP 流量
  • 七星创客:重塑商业模式认知
  • 在 Linux 中,要让某一个线程或进程排他性地独占一个 CPU
  • AI芯片WT2605C赋能厨房家电,在线对话操控,引领智能烹饪新体验:尽享高效便捷生活
  • Linux:文件描述符介绍
  • 【SpringBoot详细教程】-08-MybatisPlus详细教程以及SpringBoot整合Mybatis-plus【持续更新】
  • 端点安全服务:全面的端点安全解决方案
  • 初识CyberBattleSim
  • sql语法学习 sql各种语法 sql增删改查 数据库各种操作 数据库指令
  • 自动化测试中如何精确模拟富文本编辑器中的输入与提交?
  • Pytorch-LSTM轴承故障一维信号分类(一)
  • 如何在 Amazon EMR 中运行 Flink CDC Pipeline Connector
  • 【笔记】如何将本地的.md变成不影响阅读的类pdf模式
  • COMP 6714-Info Retrieval and Web Search笔记week2
  • 解决 Android WebView 无法加载 H5 页面常见问题的实用指南
  • Another redis desktop manager使用说明
  • 在IntelliJ IDEA中设置文件自动定位
  • 劳易测ODT3CL1-2M漫反射传感器荣获 “2024 MM《现代制造》创新产品奖”
  • AWS Network Firewall - IGW方式配置只应许白名单域名出入站
  • SQL进阶技巧:影院2人相邻的座位如何预定?
  • QT将QBytearray的data()指针赋值给结构体指针变量后数据不正确的问题
  • Brave编译指南2024 MacOS篇-构建与运行(六)
  • 正则表达式的使用规则
  • Linux —— Socket编程(三)