36人参与 • 2025-12-25 • 正则表达式
单个字符匹配:正则表达式引擎会从左到右检查目标字符串,尝试将模式中的一个字符与目标字符串中的一个字符进行匹配。
绝大多数普通字符(字母、数字),会直接匹配它们自身。
a 会匹配目标字符串中所有的字母 "a"。
"apple" 中匹配 apple。"banana" 中匹配 banana。注意事项:
a 不能匹配 "a"。/pattern/i,其中的 i 就是忽略大小写标志。元字符 . 是一个非常强大的通配符。
\n, \r 等,除非设置了 s 标志)。a.c"abc""a c"(中间是空格)"a@c""a|c""ac"(因为中间缺少一个字符)"abbc"(因为 . 只匹配一个字符)注意事项:
\ 对其进行转义,即 \.。
a.c 会匹配 aac, abc 等。a\.c 只会匹配字面字符串 "a.c"。. 不匹配换行符。这是为了在处理多行文本时能清晰地划分行。如果你需要 . 也匹配换行符(即进行“单行模式”或“点号通配模式”匹配),需要设置 s 标志。例如在javascript中:/a.c/s。当你需要匹配方括号内列出的任意一个字符时,使用字符组。
[aeiou] 会匹配所有的小写元音字母。"hello" 中匹配 hello。"world" 中匹配 world。注意事项:
- 来表示一个范围,这非常方便。
[0-9]:匹配任意一个数字。等价于 \d。[a-z]:匹配任意一个小写字母。[a-za-z]:匹配任意一个大小写字母。[0-9a-fa-f]:匹配一个十六进制数字的字符。., *, +, ?)会失去特殊含义,被当作普通字符处理。例外情况:^:如果出现在字符组的开头,表示“取反”。-:如果出现在字符组的开头或结尾,表示普通的连字符。如果出现在中间,表示范围(如 a-z)。]:表示字符组的结束,所以要匹配字面的 ],必须放在字符组的最开头或用反斜杠转义(但并非所有引擎都支持后者,最好放在开头)。\:仍然保留转义功能。字符组开头使用 ^ 表示“取反”。
[^0-9]"a", "@", " "(空格)。"0", "1", …, "9"。注意事项:
^ 只有在字符组开头才表示取反。在中间如 [a^b] 表示匹配 a, ^, 或 b。为了方便,正则表达式预定义了一些常用字符集的缩写。
| 元字符 | 等效字符组 | 含义 |
|---|---|---|
\d | [0-9] | 匹配一个数字字符。 |
\d | [^0-9] | 匹配一个非数字字符。 |
\w | [a-za-z0-9_] | 匹配一个单词字符(字母、数字、下划线)。 |
\w | [^a-za-z0-9_] | 匹配一个非单词字符。 |
\s | [ \t\r\n\f] | 匹配一个空白字符(空格、制表符、换行符等)。 |
\s | [^ \t\r\n\f] | 匹配一个非空白字符。 |
注意事项:
\w 的具体定义可能因编程语言或正则引擎而异。例如,在某些环境下(如python 3的 re.ascii 标志未设置时),\w 可能会匹配本地的字母字符,如中文汉字。在大多数默认情况下,它只匹配ascii字符。\d, \w, \s)表示“是”,大写字母(\d, \w, \s)表示“非”。| 模式 | 匹配内容 | 关键注意事项 |
|---|---|---|
a | 字符 a | 区分大小写。 |
. | 任意字符(除换行符) | 需转义为 \. 来匹配字面点号;可设置 s 标志使其匹配换行符。 |
[abc] | a, b, 或 c 中的任意一个 | 内部元字符大多失去特殊含义。使用 - 表示区间(如 [a-z])。 |
[^abc] | 除 a, b, c 外的任意一个字符 | ^ 必须在最开头才表示取反。 |
\d | 数字 [0-9] | 等价于 [0-9]。 |
\w | 单词字符 [a-za-z0-9_] | 具体范围可能因环境和配置而异。 |
\s | 空白字符 | 包括空格、换行、制表符等。 |
[0-9a-fa-f][()](匹配左圆括号或右圆括号)。注意,在字符组内,( 和 ) 就是普通字符,不需要转义。[^a-za-z] 或 \w(但注意 \w 也排除数字和下划线)。\.txt(匹配 .txt,确保点号是字面点号)。最后的黄金法则:当你对某个元字符的行为不确定时,进行转义(在其前面加 \)通常是最安全的选择,除非它在字符组 [...] 内且不是特殊字符(^, -, ])。
到此这篇关于正则表达式中单个字符匹配的文章就介绍到这了,更多相关正则表达式单个字符匹配内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论