当前位置: 首页 > 后端技术 > Python

30分钟快速入门正则表达式

时间:2023-03-26 16:12:00 Python

阅读建议,文章需要的阅读时间大概不到10分钟,只是纸上谈兵太浅了。如果你想知道这一点,你必须自己去做,所以你需要练习才能开始。20分钟,通过阅读和练习可以达到入门水平,能够解决一些基本的常规问题。这里推荐两个网站供大家测试练习:1.正则表达式练习平台:https://codejiaonang.com/2.正则表达式在线测试工具:http://regexr-cn.com/现在互联网协会正文信息呈爆炸式增长,我们常常被信息淹没。如果你想从一个巨大的文本消息中提取你需要的一小段数据,正则表达式可能会帮助你。比如提取一段文本中的所有日期,只需要一小段正则表达式:正则表达式可以实现复杂的字符串匹配,找到你需要的。在很多实际应用中,需要处理的数据有几千万种,各种复杂的字符组合层出不穷,但是我们每个人对字符串处理的要求都不一样。如果手动处理,用if...else...来一一判断会很费力,而且往往不可能。而使用正则表达式,可以实现多种需求。你需要学习正则表达式吗?许多编程语言都支持使用正则表达式进行字符串操作,例如JavaScript、Java、Python、Ruby、Perl等。所以只要你有处理字符串的需求,那么这门课程就非常适合你!正则表达式的强大之处在于它可以用非常简单的方式快速实现对字符串的复杂控制。字符组([])允许匹配一组可能出现的字符。例如:可以发现[Pp]既可以匹配大写P也可以匹配小写p。Exercise1下面请用字符组来匹配Java和java。入门课程的习题可以挑战编程胶囊网站习题2,要求你用字符集匹配Ruby,Rube,ruby??,rube。做这些问题可能对编程胶囊间隔具有挑战性。有一些非常大的常见字符组。例如,我们要匹配任意数字。如果按照上面的代码,每次都需要使用[0123456789]。但这好吗?如果你想匹配a-z中的字母怎么办?我想你肯定不想从头写到尾!为了适应这一点,正则表达式引擎在字符组中使用连字符(-)来表示区间。根据这个规则,我们可以总结出三点:匹配任意数字,可以使用[0-9];如果要匹配所有的小写字母,可以写成[a-z];如果要匹配所有大写字母,可以写成[A-Z]。例如:Exercise-MatchTargetData接下来你需要匹配数据中的所有数字,小写字母和大写字母。可以跳转到问题链接做题。转义符正则表达式使用-号来表示区间,但是有时候我们需要匹配的符号是-号,怎么办呢?这时候我们就需要对-号进行转义,即\-。在正则表达式中使用\对特殊符号进行转义,对-进行转义可以表示为\-,即\-代表-号本身。偷偷告诉你,转义符\对其他符号同样适用。比如可以用\来匹配括号(例如:匹配特殊符号。接下来请写一个正则表达式来匹配下面的符号。可以直接跳到正题:https://codejiaonang.com/#/course/regex_chapter1/0/4.<-[]--------()Reverse到目前为止,我们定义的字符组都是由可能的字符来定义的,但是有的时候我们可能想根据字符组来定义on不会出现的字符。例如:匹配不包含数字的字符组,可以通过字符数组开头的^字符取反,这样一个字符组就可以反转(意思是会匹配任意的所有指定字符以外的字符)再看一个例子:这里的n[^e]表示n后面的字母不能是e,接下来请匹配love后面不包含你的数据。练习链接:https://codejiaonang.com/#/course/regex_chapter1/0/7你爱我吗?我爱我自己。我爱我。请写匹配不包含小写字母的数据的正则表达式。题目链接:https://codejiaonang.com/#/course/regex_chapter1/0/8Shortcut根据目前所学,如果要匹配所有字母,将使用[A-Za-z],而如果要匹配数字,你会使用[0-9]或者有更简洁的方法吗?正则表达式引擎提供了一些快捷方式如:\w可以匹配任何单词字符。当我们要匹配任意数字时,也可以使用快捷键\d,d是数字的意思,相当于[0-9]。快捷键说明w匹配任意单词d匹配任意数字匹配单词接下来请使用快捷键来匹配下面的单词。mastercodejionang1234567899876543210123CODEJIAONANGhelloworldpython匹配空白\s快捷方式可以匹配空白字符,比如空格,制表符,换行符等。例如:单词边界\b匹配单词边界,例如\bmaster\b只匹配有边界的单词master。当然,也可以匹配其他类型的数据,比如数字:快捷键也可以反向。比如\w的反义就是\W,可以把小写改成大写。其他快捷方式也遵循此规则。示例:请使用正则表达式匹配以下不以字母开头的单词。在开始和结束正则表达式中,^指定字符串的开头,$指定字符串的结尾。例如:指定字符串的结尾:请写一个正则表达式来匹配以OS结尾的字符串。任何角色。character表示匹配任意单个字符,只能出现在方括号外。值得注意的是:.字符只有一个不能匹配的字符,即换行符(\n),但也可以使.字符匹配换行符,后面会讲到。示例:匹配任意字母后跟ar字符串。可选字符有时,我们可能希望匹配一个词的不同拼写,比如color和colour,或者honor和honor。此时我们可以使用?符号来指定一个字符、字符组或其他基本单元是可选的,这意味着正则表达式引擎将期望该字符出现零次或一次。例如:你在吗?表示u是可选的,即可以出现也可以不出现,可以匹配honor和honor。通过这个案例,我们可以知道作用是什么?是匹配它之前的字符0次或1次。请思考一个问题:.可以做什么?表达匹配?请使用正则表达式来匹配favorite和favorite。Repeat到目前为止,我们只了解了只出现一次的字符串匹配。在实际开发中,肯定达不到要求。比如在匹配电话号码和身份证的时候,就达不到要求。如果遇到这样的情况,我们可能会期望一个字符组连续匹配几次。在字符组后加{N}表示该字符组出现N次之前的字符组。例如:重复间隔有时,我们不知道重复要匹配的字符组的具体次数,例如身份证有15位或18位。这里可以播放重复区间,语法:{M,N},M为下限,N为上限。例如:\d{3,4}既可以匹配3个数,也可以匹配4个数,但是当有4个数时,优先匹配4个数,因为正则表达式默认是贪心模式,即尽可能匹配字符尽可能多,并且要使用非贪婪模式,我们需要添加一个?在表达后签名。开闭区间有时我们可能会遇到一个字符组的重复次数没有边界。比如闭区间不写,表示匹配一个或者无数个。速记也可以用两个速记字符来指定常见的重复,可以用+来匹配1到innumerable,用*来代表0到innumerable。即:+相当于{1,},*相当于{0,}。+符号示例:*符号示例:匹配手机号码现在请使用正则表达式来匹配手机号码,假设手机号码规则如下:必须是11位数字;第一个数字必须以1开头,第二个数字可以是[3,4,5,7,8]中的任意一个,接下来的9个数字是[0-9]中的任意一个。1811123458918711001111137132011111371234567814712345897157215654891772156548929711001111307110011114171100111158-11100111106871100111112345678911200110023057123另外一些习题可以访问:https://codejiaonang.com/进阶课程请看下一篇:《正则表达式进阶》)。Feelwelcometolikeandcomment.