黄村网站开发公司网站路径301重定向怎么做
正则表达式中的特殊字符
- 字符类
 - 预定义字符类
 - 量词
 - 锚点
 - 分组和捕获
 - 选择、分支和条件
 - 反义和否定
 - 转义字符
 - 示例
 
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
作者:神的孩子都在歌唱
在正则表达式中,有许多特殊字符用于定义匹配模式。以下是常用的正则表达式特殊字符及其解释。
字符类
[]:定义字符类,用于匹配方括号内的任意一个字符。- 示例:
[abc]匹配a、b或c。 
- 示例:
 -:在字符类中表示范围。- 示例:
[a-z]匹配任何小写字母。 
- 示例:
 
预定义字符类
.:匹配除换行符外的任意一个字符。\d:匹配任意一个数字,等价于[0-9]。\D:匹配任意一个非数字字符,等价于[^0-9]。\w:匹配任意一个单词字符(字母、数字或下划线),等价于[a-zA-Z0-9_]。\W:匹配任意一个非单词字符,等价于[^a-zA-Z0-9_]。\s:匹配任意一个空白字符(空格、制表符、换行符等)。\S:匹配任意一个非空白字符。
量词
*:匹配前面的字符零次或多次。- 示例:
a*匹配""、a、aa、aaa等。 
- 示例:
 +:匹配前面的字符一次或多次。- 示例:
a+匹配a、aa、aaa等。 
- 示例:
 ?:匹配前面的字符零次或一次。- 示例:
a?匹配""或a。 
- 示例:
 {n}:匹配前面的字符恰好n次。- 示例:
a{3}匹配aaa。 
- 示例:
 {n,}:匹配前面的字符至少n次。- 示例:
a{2,}匹配aa、aaa、aaaa等。 
- 示例:
 {n,m}:匹配前面的字符至少n次且至多m次。- 示例:
a{2,4}匹配aa、aaa或aaaa。 
- 示例:
 
锚点
^:匹配字符串的开始。- 示例:
^abc匹配以abc开头的字符串。 
- 示例:
 $:匹配字符串的结束。- 示例:
abc$匹配以abc结尾的字符串。 
- 示例:
 \b:匹配单词边界。- 示例:
\bword\b匹配word,但不匹配sword或words。 
- 示例:
 \B:匹配非单词边界。- 示例:
\Bword\B匹配swordsmith中的word。 
- 示例:
 
分组和捕获
():定义分组,并捕获匹配的子字符串。- 示例:
(abc)匹配并捕获abc。 
- 示例:
 (?:):定义分组,但不捕获匹配的子字符串。- 示例:
(?:abc)匹配但不捕获abc。 
- 示例:
 
选择、分支和条件
|:表示选择或分支。- 示例:
a|b匹配a或b。 
- 示例:
 (?=...):正向前瞻断言,匹配...前的位置。- 示例:
a(?=b)匹配a,但仅当a后面跟着b。 
- 示例:
 (?!...):负向前瞻断言,匹配不为...前的位置。- 示例:
a(?!b)匹配a,但仅当a后面不跟着b。 
- 示例:
 
反义和否定
^:在字符类中表示反义。- 示例:
[^abc]匹配除a、b、c之外的任意字符。 
- 示例:
 (?<=...):正向后瞻断言,匹配...后的位置。- 示例:
(?<=a)b匹配b,但仅当b前面是a。 
- 示例:
 (?<!...):负向后瞻断言,匹配不为...后的位置。- 示例:
(?<!a)b匹配b,但仅当b前面不是a。 
- 示例:
 
转义字符
\:用于转义特殊字符,使其作为普通字符处理。- 示例:
\.匹配.字符,而不是任意字符。 
- 示例:
 
示例
以下是一些示例来展示如何使用上述特殊字符:
import re# 匹配任意单个字符
pattern = re.compile(r'.')
print(pattern.match('a').group())  # 输出: a# 匹配任意数字
pattern = re.compile(r'\d')
print(pattern.match('5').group())  # 输出: 5# 匹配单词边界上的单词
pattern = re.compile(r'\bword\b')
print(pattern.search('A word in a sentence').group())  # 输出: word# 匹配以 abc 开头的字符串
pattern = re.compile(r'^abc')
print(pattern.match('abcde').group())  # 输出: abc# 匹配以 xyz 结尾的字符串
pattern = re.compile(r'xyz$')
print(pattern.search('123xyz').group())  # 输出: xyz# 匹配包含 "hello" 或 "world" 的字符串
pattern = re.compile(r'hello|world')
print(pattern.search('hello world').group())  # 输出: hello# 匹配以数字开头且包含一个或多个空白字符的字符串
pattern = re.compile(r'^\d\s+')
print(pattern.match('5    ').group())  # 输出: 5    # 匹配字符串中的邮箱地址
pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b')
print(pattern.search('My email is example@test.com').group())  # 输出: example@test.com
 
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。
