Python正则表达式和元字符详解
正则表达式
正则表达式是⼀种强⼤的字符串操作⼯具。它是⼀种领域特定语⾔ (DSL),不管是 Python 还是在⼤多数现代编程语⾔中都是作为库存在。
它们主要⾯向两种任务:
- 验证字符串是否与模式匹配(例如,字符串具有电⼦邮件地址的格式)。
- 在字符串中执⾏替换(例如将所有⼤写字母改成⼩写字母)。
特定于领域的语⾔是⾼度专业化的迷你编程语⾔。
正则表达式是⼀个例⼦,SQL(⽤于数据库操作)是另⼀个例⼦。
私有领域特定语⾔通常⽤于特定的⼯业⽬的。
Python 的正则表达式可以使⽤ re 模块访问,re 模块是标准库的⼀部分。
当你定义⼀个正则表达式,可以使⽤ re.match 函数⽤于确定是否匹配字符串的开始部分。如果匹配则 match 函数返回表⽰匹配的对象,如果不匹配则返回 None。
为了避免在处理正则表达式时出现混淆,我们将 r 添加到字符串前缀。该字符串不需要转义任何东西,使得正则表达式的使⽤变得更容易。
from re import match
msg = r"super"
if match(msg,"superman!"):
print("You are True")
else:
print("Occur an error! ")
运⾏结果:
>>>
You are True
>>>
上⾯的例⼦检查模式 super 是否匹配字符串,如果匹配,则打印 You are True。
这⾥的模式是⼀种简单的单词,但是有些字符串,在正则表达式中使⽤它们时会有特殊的意义。
匹配模式的其他函数有re.match 和re.findall。
re.match 在字符串中到匹配。
re.findall 返回⼀个包含匹配的列表。
import re
string = "Hello python!Hello python!Hello python!"
pattern = r".python."
print(re.match(pattern,string))
print(re.findall(pattern,string))
运⾏结果:
>>>
None
[' python!', ' python!', ' python!']
>>>
从上⾯的⽰例中,我们可以得出:
match() 函数是从内容的第⼀个字符开始匹配,如果匹配不到,就得到None
findall() 函数从全部内容匹配,如果有多个,出所有匹配的
函数 re.finditer 执⾏与 re.findall 相同的操作,但它返回⼀个迭代器,⽽不是⼀个列表。
正则表达式的 search 函数返回⼀个对象,包含⼏个更详细的信息。
此⽅法包括返回字符串匹配的值,返回第⼀次匹配的开始和结束位置,以及以元组形式返回第⼀个匹配的开始和结束位置的span 函数。
import re
string = "Hello python!Hello python!Hello python!"
pattern = r".python."
match = re.search(pattern,string)
if match:
up())
print(match.start())
d())
print(match.span())
运⾏结果:
>>>
python!
5
13
(5, 13)
>>>
查和替换
sub 是正则表达式⾥⾮常重要的函数。表达式:
re.sub(pattern, repl, string, count=0, flags=0)
pattern:表⽰正则表达式中的模式字符串;
repl:被替换的字符串(既可以是字符串,也可以是函数);
string:要被处理的,要被替换的字符串;
count:匹配的次数, 默认是全部替换
flags:具体⽤处不详
import re
string = "Hello python!Hello python!Hello python!"
pattern = r"python"
newstr = re.sub(pattern,"Java",string)
print(newstr)
运⾏结果:
>>>
Hello Java!Hello Java!Hello Java!
>>>
元字符
元字符使正则表达式⽐普通字符串⽅法更强⼤。它们允许您创建正则表达式来表⽰诸如⼀个或多个数字的匹配。
如果要创建与元字符 (如 $) 匹配的正则表达式,元字符的存在就会产⽣问题。您可以通过在元字符前⾯添加反斜杠来转义元字符。
但是这可能会导致问题,因为反斜杠在普通 Python 字符串中也有转义函数。这可能意味着可能将三个或四个反斜杠排成⼀⾏来执⾏所有转义操作。
为了避免这种情况,您可以使⽤⼀个原始字符串,它是⼀个普通字符串,前⾯有⼀个 "r" 前缀。
元字符点,⽤来表⽰匹配除了换⾏外的任何字符。
import re
string1 = "Hello python!Hello python!Hello python!"
string2 = "pythan,1234587pythoi"
string3 = r"hello"
pattern = r"pyth.n"
match1 = re.search(pattern,string1)
match2 = re.search(pattern,string2)
match3 = re.search(pattern,string3)
if match1:
up())
print("match 1")
if match2:
up())
print("match 2")
if match3:
up())
print("match 3")
运⾏结果:
>>>
python
match 1
python正则表达式不包含python
match 2
>>>
^ 表⽰匹配开始,$ 表⽰匹配结束。
import re
string1="python"
string2="pythan,1234587pythoi"
string3="hello"
pattern=r"^pyth.n$"
match1 = re.search(pattern,string1)
match2 = re.search(pattern,string2)
match3 = re.search(pattern,string3)
if match1:
up())
print("match 1")
if match2:
up())
print("match 2")
if match3:
up())
print("match 3")
运⾏结果:
>>>
python
match 1
>>>
匹配模式 "^pyth.n$"意味着字符串应该以 pyth 开头,然后是⼀个除换⾏符以外的任何字符,并以 n 结尾。
总结
以上所述是⼩编给⼤家介绍的Python正则表达式和元字符,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。