让我们讨论一下 REGEX !!

2025-06-07

让我们讨论一下 REGEX !!

我想我们大多数人都会同意这一点:

“正则表达式”是计算机科学中的概念之一,无论你练习多少次,你都可能需要回到你的笔记或用谷歌搜索它。😟


什么是正则表达式❓😕

正则表达式定义了字符串的搜索模式。正则表达式的缩写是 regex。搜索模式可以是任何内容,包括简单字符、固定字符串或包含描述该模式的特殊字符的复杂表达式。对于给定的字符串,正则表达式定义的模式可能匹配一次、多次,或者根本不匹配。


💥 常见匹配符号:

正则表达式 描述
匹配任意字符
^正则表达式 查找必须在行首匹配的正则表达式。
正则表达式$ 查找必须在行尾匹配的正则表达式。
[abc] 集合定义,可以匹配字母a或者b或者c。
[abc][vz] 集合定义,可以匹配 a 或 b 或 c 后跟 v 或 z。
[^abc] 当插入符号作为方括号内的第一个字符出现时,它会否定该模式。此模式匹配除 a、b 或 c 之外的任何字符。
[a-d1-7] 范围:匹配 a 到 d 之间的字母和 1 到 7 之间的数字,但不匹配 d1。
Z
西泽 查找紧接着 Z 的 X。
$ 检查是否跟随有行尾。

💥 元字符:

正则表达式 描述
\d 任意数字,[0-9] 的缩写
\D 非数字,[^0-9] 的缩写
\s 空格字符,缩写为 [ \t\n\x0b\r\f]
\S 非空白字符
\w 单词字符,[a-zA-Z_0-9] 的缩写
\W 非单词字符 [^\w]
\S+ 几个非空白字符
\b 匹配单词边界,其中单词字符为 [a-zA-Z0-9_]

🎯 [注意]:这些元字符的首字母与其表示形式相同,例如数字、空格、单词和边界。大写符号定义相反。


💥 量词:

量词定义元素出现的频率。符号 ?、*、+ 和 {} 都是限定符。

正则表达式 描述
* 发生零次或多次,是 {0,} 的缩写
+ 发生一次或多次,是 {1,} 的缩写
未出现或出现一次,? 是 {0,1} 的缩写。
{X} 发生 X 次,{} 描述前面自由主义的顺序
{X,Y} 发生在 X 至 Y 次之间
*? 量词后加“?”会使量词变为不情愿量词。它会尝试找到最小的匹配项。这会使正则表达式在第一个匹配项处停止。

🎯 [注意] - 反斜杠 \ 在 Java 字符串中是转义符。这意味着反斜杠在 Java 中具有预定义的含义。您必须使用双反斜杠 \ 来定义单反斜杠。如果您想定义 \w,则必须在正则表达式中使用 \w。如果您想将反斜杠用作文字,则必须输入 \\,因为 \ 在正则表达式中也是转义符。


💥 重新定义了 String 上的方法来处理正则表达式。

正则表达式 描述
s.匹配(“正则表达式”) 评估“regex”是否与 s 匹配。仅当整个字符串可以匹配时才返回 true。
s.split(“正则表达式”) 创建一个数组,其中包含在“regex”出现处划分的 s 子字符串。结果中不包含“regex”。
s.replaceFirst(“正则表达式”),“替换” 将第一次出现的“regex”替换为“replacement”。
s.replaceAll(“正则表达式”),“替换” 将所有出现的“regex”替换为“replacement”。

在这里练习你的正则表达式
技能

从讨论面板收集的一些资源:
regex101
regexr
ihateregex.io

感谢MadzaJakeer提供的链接。


我的其他一些帖子:

概念 关联
Java访问修饰符 转到文章
Java 泛型 转到文章
Java 正则表达式 转到文章
Java 流 API 转到文章

如果你喜欢这篇文章,请留下❤️!
🦄就更好了!

如果您认为我遗漏了什么,请随时在讨论中告诉我。

祝你有美好的一天!

文章来源:https://dev.to/the_unconventional_coder/lets-talk-about-regex-3npd
PREV
Shell 脚本很重要
NEXT
✨ 5 个网站可获得免费编程电子书!