html网站开发基础,个人建站项目,东莞汽车总站停止营业,wienj wordpress文章目录 是什么#xff1f;正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么#xff1f; 正则表达式(Regular Expression)是一种文本模式#xff0c;包括普通字符#xff08;例如#xff0c;a 到 z 之间的字母#xff09;和特殊… 文章目录 是什么正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么 正则表达式(Regular Expression)是一种文本模式包括普通字符例如a 到 z 之间的字母和特殊字符称为元字符可以用来描述和匹配字符串的特定模式。 正则表达式是一种用于模式匹配和搜索文本的工具。 正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。 正则表达式可以应用于各种编程语言和文本处理工具中如 JavaScript、Python、Java、Perl 等。 也就是说正则表达式是用来筛选信息的工具用于匹配查找替换等操作它是一串特殊字符的集合。正则表达式用来匹配有相似特征的字符串。
#为什么要用正则表达 就是在表单验证时准确的判断一个字符串是不是某种固定格式。比如邮箱的验证、手机号的验证等。目的是避免恶意用户的乱输入使表单的收集是我们想要的格式 想象一下您正在编写应用程序并且您希望在用户选择用户名时设置规则。我们希望用户名可以包含字母数字下划线和连字符。 为了让它看起来不丑我们还想限制用户名中的字符数量。这时我们可以使用正则表达式来验证用户名 也就是说使用正则表达式的意义在于将数据转化为用户需要的格式使信息更加形象表达方便查找是否有恶意信息。
正则用法
匹配单个字符
记号说明.匹配任意单个字符换行符除外. 表示真正的.[…x-y…]匹配字符集合里的任意单个字符[^…x-y…]匹配不在字符组里的任意单个字符\d匹配任意数字与[0-9] 同义\w匹配任意数字、字母、下划线与[0-9a-zA-Z_] 同义\s匹配空白字符与[\r\v\f\t\n] 同义
匹配一组字符
记号说明字符串匹配字符串值字符串1|字符串2匹配字符串1或字符串2*左邻第一个字符出现0 次或无穷次左邻第一个字符最少出现1 次或无穷次?左邻第一个字符出现0 次或1 次{m,n}左邻第一个字符出现最少m 次最多n 次
其他元字符
记号说明^匹配字符串的开始 集合取反$匹配字符串的结尾\b匹配单词的边界单词包括\w 中的内容()对字符串分组\数字匹配已保存的子组
核心函数
核心函数说明re.findall()在字符串中查找正则表达式的所有非覆盖出现返回一个匹配对象的列表。re.match()尝试用正则表达式模式从字符串的开头匹配 如果匹配成功则返回一个匹配对象 否则返回Nonere.search()在字符串中查找正则表达式模式的第一次出现 如果匹配成则返回一个匹配对象 否则返回Nonere.group()使用match 或者search 匹配成功后返回的匹配对象 可以通过group() 方法获取得匹配内容re.finditer()和findall() 函数有相同的功能但返回的不是列表而是迭代器 对于每个匹配该迭代器返回一个匹配对象re.split()根据正则表达式中的分隔符把字符分割为一个列表并返回成功匹配的列表字符串也有类似的方法但是正则表达式更加灵活re.sub()把字符串中所有匹配正则表达式的地方换成新的字符串
贪婪匹配和非贪婪匹配 贪婪匹配尽可能匹配多的字符 非贪婪匹配尽可能匹配少的字符 如下面的代码要匹配中间的数字但是他的输出结果只有7这是因为在贪婪匹配下(\d)前的.*会尽可能匹配多的字符而(\d)是匹配任意个数字没有说具体几个数字这样他就会匹配将llo 123456都匹配只留一个数字给(\d)匹配这样(\d)就只能匹配到7。
import reshello 1234567 world
res re.match(he.*(\d).*rld$,s)print(res.group(1))如果要输出1234567就要将匹配变为非贪婪匹配在.*后加一个?匹配尽可能少的字符这样一来.*?匹配到llo后面的空格后就不再匹配而是交给(\d)匹配这样就能匹配到1234567了
import reshello 1234567 world
res re.match(he.*?(\d).*rld$,s)print(res.group(1))正则练习
Python环境下引入re模块定义一个字符串 import resI say food not Good匹配ood字符串 匹配出foodGood
贪婪匹配
非贪婪匹配 用点和中括号匹配