ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python正则表达式(一)——正则表达式的编写

2022-03-21 17:00:02  阅读:216  来源: 互联网

标签:字符 匹配 正则表达式 pattern python 字符串 编写 限定符


文章目录

前言

示例:今天为大家简单介绍python中如何使用正则表达式。基础概念可以百度或在菜鸟教程查看,这里只介绍实践如何使用。

提示:以下是本篇文章正文内容,下面案例可供参考

正则表达式的编写

1.限定符有哪些?

参考链接:https://www.runoob.com/regexp/regexp-metachar.html
link
限定符:用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配

限定符描述
*匹配前面的子表达式零次或多次
+匹配前面的子表达式一次或多次,最少匹配一次
?匹配前面的子表达式零次或一次,可以不匹配到这个子表达式,匹配也只能匹配一次
{n}规定匹配前面的子表达式n次
{n}规定匹配前面的子表达式n次
{n,}规定最少匹配前面的子表达式n次,最多无限制
{n,m}规定最少匹配前面的子表达式n次,最多匹配子表达式m次

2.正则表达式的给定组件有哪些?

(1)匹配一个字符

# 在字符串中匹配‘o’
pattern = 'o'

用限定符限制匹配次数

# 在字符串中匹配0个或多个‘o’
pattern = 'o*'

(2)通过选择器‘|’匹配多个可能的字符

# 在字符串中匹配‘a’或‘e’或‘i’或‘o’或‘u’
pattern = 'a|e|i|o|u'

用限定符限制匹配次数

# 在字符串中匹配1个或多个‘a’或‘e’或‘i’或‘o’或‘u’,或他们的组合
pattern = '(a|e|i|o|u)+'

(3)匹配在字符集中的任何一个字符

ps:字符集中的‘.’只匹配.而不是任意字符

# 在字符串中匹配‘a’或‘e’或‘i’或‘o’或‘u’
# 和'a|e|i|o|u'的功能相同
pattern = '[aeiou]'
# 在字符串中匹配除‘a’或‘e’或‘i’或‘o’或‘u’之外的字符
pattern = '[^aeiou]'
# 在字符串中匹配'a'到‘z’之间的所有字符
pattern = '[a-z]'
# 在字符串中匹配'1'到‘9’之间的所有字符
pattern = '[1-9]'
# 在字符串中匹配除'a'到‘z’之间的所有字符的字符
pattern = '[^a-z]'

用限定符限制匹配次数

# 在字符串中匹配1个或多个‘a’或‘e’或‘i’或‘o’或‘u’,或他们的组合
# 例如‘a’或‘aa’或‘ae’或‘eee’或‘aeioo’等等
pattern = '[aeiou]+'

(4)匹配一个字符串

# 在字符串中匹配‘python’
pattern = 'python'

用限定符限制匹配次数

# 在字符串中匹配‘python’或‘pythonn’
pattern = 'python?'
# 在字符串中匹配‘python’或‘pythonn’或‘pythonnn’
pattern = 'python{1,3}'

(5)通过选择器‘|’匹配多个可能的字符串

# 在字符串中匹配‘python’或‘java’
pattern = 'python|java'

用限定符限制匹配次数

# 在字符串中匹配‘python’或‘pythonn’或‘pythonnn’或‘java’
pattern = 'python{1,3}|java'

(6)匹配多个可能的字符串多次

# 在字符串中匹配‘python’或‘java’0次或1次
pattern = '(python|java)?'

用限定符限制匹配次数

# 在字符串中匹配‘python’或‘java’或‘pythonpython’
# 或‘pythonjava’ 或‘javapython’或‘javajava’
pattern = '(python|java)+'

(7)一些可以代表很多字符的特殊字符

特殊字符描述
.匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]要匹配 . ,请使用 .
\s匹配所有空白符,包括换行
\S非空白符,不包括换行
\w匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
\W匹配非字母、数字、下划线。等价于 [^A-Za-z0-9_]
\d匹配一个数字字符。等价于 [0-9]
\D匹配一个非数字字符。等价于 [^0-9]

(8)匹配一些控制字符

控制字符:在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、+和空格符等都是可显示字符。
另一类字符却没有这种特性。它们或者在键盘上找不到对应的一个键(当然可以用特殊方式输入),或者当按键以后不能显示键面上的字符。其实,这类字符是为控制作用而设计的,故称为控制字符

特殊字符描述
\f匹配一个换页符。等价于 \x0c 和 \cL。
\n匹配一个换行符。等价于 \x0a 和 \cJ。
\r匹配一个回车符。等价于 \x0d 和 \cM。
\t匹配一个制表符。等价于 \x09 和 \cI
\v匹配一个垂直制表符。等价于 \x0b 和 \cK。

例如\n

import re
pattern = '[\n]'
string2 = '[\n]'
string3 = '''
'''
matchobj1 = re.search(pattern,string2)
matchobj2 = re.search(pattern,string3)
print(matchobj1)
print(matchobj2)

输出结果为
在这里插入图片描述
注意:匹配.和限定符(? * +)还有左右括号()这些特殊符号要用‘\’进行转义才能匹配特殊符号本身

3.正则表达式的定位符

定位符用来限定满足正则表达式的子串在原字符串的位置

特殊字符描述
^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b匹配一个单词边界,即字与空格间的位置
\B非单词边界匹配

标签:字符,匹配,正则表达式,pattern,python,字符串,编写,限定符
来源: https://blog.csdn.net/qq_42340965/article/details/123599272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有