让我们讨论一下 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
我的其他一些帖子:
如果你喜欢这篇文章,请留下❤️!
🦄就更好了!
如果您认为我遗漏了什么,请随时在讨论中告诉我。
祝你有美好的一天!
文章来源:https://dev.to/the_unconventional_coder/lets-talk-about-regex-3npd