正则表达式_1

简介: b站:奇乐编程 10分钟快速掌握正则表达式

正则表达式可以被视作是增强版的通配符,可以匹配制定规则的字符串。

练习方法

可以在编译器中自带的查找功能尝试,也可以在 regex101.com 在线测试工具中尝试。

限定符 Quantifiers

? 表示前面的字符需要出现0次或1次。

如:used? 可以匹配 use 和 used.

* 表示前面的字符需要出现0次或多次。

如:ab*c会匹配ac、abc、abbbc……但不能匹配到 adc。

+ 表示前面的字符需要出现1次或多次。

如上例,ab+c不会匹配 ac。

{数字} 表示前面的字符需要出现多少次。

如:ab{6}c表示 abbbbbbc,ab{2,6}c 表示b出现2~6次,ab{2,}c表示b出现2次以上。

() 用于限定多个字符。

如:(ab)?c表示c或abc。

或运算 or

a (cat|dog) 表示 a cat 或 a dog.括号不能少

字符类 Character Classes

[]+,用于匹配单词,单词的字符只能取自方括号内。

如:[abc]+表示只由 abc 组成的字符,aabbcc等。

[a-z]+表示所有小写字母

[a-zA-Z]+表示所有字母

[0-9]+表示所有数字

方括号内加^表示取反,如[^a-z]+表示所有非小写字母的字符(甚至包括换行符)

元字符 Meta-characters

\d:数字字符

\D:非数字字符

\w:单词字符(英文字符、数字字符、下划线)

\W:非单词字符

\s:空白字符(Tab、空格、换行符)

\S:非空白字符

\b:单词字符的边界,相当于文本的开头或结束。

.:任意字符(不包括换行符)

^:匹配行首,如^a只会匹配出现在行开头的a

$:匹配行尾,如a$只会匹配出现在行结尾的a

反斜杠用在符号前还可以做转义,如\.表示.字符。

贪婪与懒惰匹配 Greedy vs Lazy Match

<span><b>This is a simple text</b></span>

如果想匹配所有的标签,也就是匹配<>,中间的内容是一个或多个任意字符。

<.+>

但是这样匹配,会把整行都匹配起来,而不是每个标签单独匹配。这就是贪婪匹配,会尽可能多地匹配。因为.也会匹配>号。

<.+?>

例: IP 地址

IP 地址形如 192.168.0.1

由四部分数字和三个.组成,每部分数字都不能大于255.

首先表示出四部分数字+3个.的形式:

(\d+\.){3}(\d+)

然后再考虑处理数字大小的问题。

首先,如果百位是2,十位是5,个位只能取0-5

如果百位是2,十位是0-4,个位任意数字

如果百位是0或1,十位和个位可以是任意数字

((25[0-5]|2[0-4]\d|[01]\d\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d)

然后考虑百位和十位可能不存在的问题:用?处理这两位。

((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)

最后首尾加一个\b限定字符边界

\b((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)\b
目录
相关文章
|
监控 druid Java
SpringBoot 使用【druid-spring-boot-starter】集成 druid 监控数据库
SpringBoot 使用【druid-spring-boot-starter】集成 druid 监控数据库
1027 0
|
3天前
|
云安全 人工智能 自然语言处理
|
7天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
717 17
|
10天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
750 57
Meta SAM3开源:让图像分割,听懂你的话
|
8天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
329 116
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
496 37
|
23天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~