正则表达式完全匹配详解:如何使用^和$精确匹配字符串
正则表达式完全匹配

正则表达式是一种可用于操作字符串的强大工具。它能够用来进行验证等一系列操作,也可以用来进行匹配、替换、提取等操作。本文会重点介绍正则表达式的完全匹配。
正则表达式的完全匹配意味着精确地匹配一个字符串。也就是说,一个字符串必须完全符合正则表达式的规则,才会被认定为是匹配的。在正则表达式里,用 ^ 来表示字符串的开头,用 $ 来表示字符串的结尾。
例如,以下正则表达式只会匹配一个由数字组成的字符串:
import re
pattern = "^\d+$"
re.match(pattern, "12345") 后匹配成功了。
re.match(pattern, "12a45") 进行匹配后得出的结果是失败的。
print(result1)
print(result2)
输出结果:
None
上述代码里,运用了 Python 的 re 模块去进行正则表达式的匹配。re.match()这个方法是用来尝试从字符串的起始处去匹配正则表达式的,要是匹配成功了,就会返回一个 Match 对象,要是匹配失败了,就会返回 None 。span=(0,5)的意思是匹配的字符串的起始位置以及结束位置。
除了前面提及的 ^ 以及 $ 之外,正则表达式还拥有其他的元字符与转义字符,以下这些是一些较为常用的元字符与转义字符:
以下正则表达式能够匹配这样的字符串:以字母开头,由字母数字构成,其长度在 6 到 12 之间。
import re
以 "^" 开头,后面跟着一个由字母组成的字符,其长度在 5 到 11 个字符之间,且包含至少一个字母。
re.match(pattern, "abc123") 匹配成功了。
result2 进行了对 pattern 与 "abc123abc123" 的匹配操作,匹配结果为失败。
print(result1)
print(result2)
输出结果:
None
在上述正则表达式里,运用了字符集 [a-zA-Z] 去匹配任意一个字母。同时,\w{5,11} 表示能够匹配任意一个字母数字,并且长度处于 5 到 11 之间的字符串。所以,上述正则表达式匹配成功的字符串仅仅可以是 abc123。
有时候,我们需要匹配一个包含多个子模式的字符串。在这种情况下,可以运用正则表达式的分组特性。在正则表达式里,通过 () 来标识一个分组,并且能够对分组进行一些额外的操作,像限定分组出现的次数,以及获取分组匹配到的内容等。
以下正则表达式能够匹配由多个以空格分隔的数字构成的字符串,同时对这些数字的取值范围进行了限定。
import re
该模式为“\(\d{1,3}\) 个空格重复两次,后面跟一个 \(\d{1,3}\)”
result1 对 "123 456 789" 进行了匹配操作,并且匹配成功了。
result2 进行匹配操作,匹配的模式为 pattern,匹配的字符串为"1 55 22 7",匹配结果为失败。
print(result1)
print(result2)
输出结果:
None
在上述正则表达式里,一个由 1 到 3 个数字以及一个空格构成的分组用 (\d{1,3}\s) 表示;{2} 意味着这个分组要重复出现 2 次;\d{1,3} 则表示能匹配一个由 1 到 3 个数字组成的字符串。所以上述正则表达式能够匹配成功的字符串,必定是一个由 3 个以空格相隔、每个数字为 1 到 3 位的数字组成的字符串。
结论
正则表达式的完全匹配是很常见且实用的字符串匹配技巧。在实际工作里,我们能够运用正则表达式工具去处理各种字符串操作,像过滤、验证、替换、提取等。本文着重介绍了正则表达式的完全匹配,还有常用的元字符、转义字符以及分组特性。在实际应用时,我们得结合实际情况,挑选合适的正则表达式来进行操作。