当前位置: 首页 > Linux

网友投稿:什么是规律性?一篇引天下,一篇带你看本质

时间:2023-04-06 03:03:47 Linux

写在开头。不知道大家有没有过这样的经历:我们去一些网站注册账号。当您设置密码时,网站会提示您密码的长度范围和相应的规则限制。现在假设我们不会正则表达式,作为程序员,如何实现这样的密码验证呢?关于正则表达式一直是一件让我们很多人感到很郁闷的事情。我认为创建正则表达式的人简直是个奇怪的东西。什么是正则表达式?正则表达式是为处理大量的文本|字符串而设计的,在这些定义好的特殊符号的辅助下,定义了一套规则和方法,系统管理员可以快速过滤、替换或输出需要的字符串。Linux正则表达式一般以行为单位进行处理。正则表达式是描述一组字符串的模式,类似于数值表达式,各种运算符用于组成更小的表达式。为什么要使用正则表达式?linux运维工作,很多过滤日志的工作。简单高效。正则表达式的高级工具;三剑客都支持(grep,sed,awk)注意事项正则表达式被广泛使用,存在于各种语言中,phpperlgrepsedawk支持。ls*通配符,不过现在我正在学习Linux中的正则表达式。使用正则表达式最常用的命令是grep(egrep)、sed和awk。正则表达式和通配符有一个本质区别:正则表达式用于查找:[文件]内容、文本、字符串。一般只有三剑客支持。通配符用于查找:文件名和常用命令都支持正则表达式。使用正则表达式的注意事项1、Linux正则表达式以行为单位处理字符串2、过滤后的字符串很容易区分。必须配合grep/egrep命令学习。正则表达式的分类POSIX规范将正则表达式分为两种基本正则表达式(BRE,basicregularexpression)高级特性:扩展正则表达式(ERE,extendedregularexpression)BRE和ERE的区别只是元字符区别:BRE(BasicRegularExpression)只识别带^$.[]*的元字符,其他字符识别为普通字符:()ERE(ExtendedRegularExpression)加(){}?+|等,只在用反斜杠转义的情况下"\",字符(){}在BRE中将被视为元字符,而在ERE中,在任何元符号前添加反斜杠将使其被视为元字符。视为普通字符。怎么玩区分通配符和正则表达式不用考虑判断方法:三剑客awk中,sed,grep,egrep都是正则,其他都是通配符最简单的区分通配符和正则表达式的方法:(1)文件目录名===>通配符(2)文件内容(字符串,文本[文件]内容)===>正则表达式通配符和正则表达式有“*”、“?”、“[]”,但是通配符这些符号本身可以表示任意字符,正则表达式的这些符号只能表示这些符号之前的字符基本正则表达式字符描述^^word搜索以word开头的内容$word$搜索以word结尾的内容^$表示空白行,而不是空格。它代表且只能代表任意字符(不匹配空行)\转义字符,让有特殊含义的字符脱掉马甲,显出原形,如。只表示一个小数点*重复前一个字符或文本0次或多次,前一个文本或字符连续0次或多次*任意个字符^.*以任意个字符串开头,.*多达可能,尽可能多,贪心括号表达式abc[.,/]匹配字符集中的任意字符a、b或c:[a-z]匹配所有小写字母;它意味着一个整体,具有无限的可能性;[abc]可以写成[a-c]1匹配任何不包含^的字符a、b、c,是[abc]的倒置,和^意义不同a{n,m}重复previousacharacterntomtimes(ifyouuseegreporsed-rcanremovetheslash)a{n,}重复前一个字符至少n次,如果使用egrep或sed-r,则可以去掉斜线a{n}重复前一个字符n次,如果使用egrep或sed-r可以去除斜杠扩展正则表达式ERE特殊字符说明+重复前一个字符一次或多次,前一个字符连续一个或多个,取出连续的文本/字符?重复前一个字符0次或1次(.有且只有1次)()分组过滤圈起来的东西代表一个整体(一个字符),反向引用正则汇总基本正则:BRE^$.*.*[abc]1扩展正则:ERE+?(){}a{n,m}a{n,}a{n}转义字符\:改变字符意义(不支持正则符号,字符意义改为正则,支持thetransformationofregularcharactersintothemeaningofordinarycharacters)基本正则和扩展正则的区别。,而扩展正则就是让命令扩大权限,让他可以直接识别正则表达式符号(egrep,sed-r,awk直接支持)注意grep默认是不支持正则表达式的,所以正则表达式正则表达式的符号对于grep来说相当于普通字符的意思,所以如果想让grep直接处理正则符号,必须使用转义符{}来处理grep-E强制grep不转义直接识别常规符号。egrep相当于grep-E。它可以自然地识别规则符号。我们通常可以以cp文件名{,.bak}的形式备份,避免再次输入文件名sed-r:让sed支持正则补充描述正则表达式描述示例[:alnum:][a-zA-Z0-9]匹配任何字母数字字符[[:alnum:]]+[:alpha:]匹配任何字母字符(包括大写和小写字母)[[:alpha:]]{4}[:blank:]空格和制表符(水平和垂直)[[:blank:]]*[:digit:]匹配任何数字字符[[:digit:]]?[:lower:]匹配小写字母[[:lower:]]{5,}[:upper:]匹配大写字母([[:upper:]]+)?[:punct:]匹配标点符号[[:punct:]][:space:]匹配所有空白字符,包括换行符、回车符等。[[:space:]]+[:graph:]匹配任何可见和可打印字符[[:graph:]][:xdigit:]任意十六进制数[[:xdigit:]]+[:cntrl:]任意控制字??符(ASCII字符集的前32个字符)[[:cntrl:]][:print:]任意可打印字符[[:print:]]###元字符正则表达式描述示例\b词边界\bcool\b匹配cool,不匹配coolant\B非词边界cool\B匹配coolantdoes不匹配cool\d单个数字字符b\db匹配b2b,不匹配bcb\D单个非数字字符b\Db匹配bcb不匹配b2b\w单个单词字符(字母、数字和_)\w匹配1或a,不匹配&\W单个非单词字符\W匹配&,不匹配1或a\n换行符\n匹配换行符\s单个空白字符x\sx匹配xx,不匹配xx\S单个非空字符x\S\x匹配xkx,不匹配xx\r回车符\r匹配回车符\水平制表符\t匹配水平制表符\v垂直制表符\v匹配垂直制表符\f换页符\f匹配一个formfeed最后还是要学习正则表达式,配合grep,egrep,sed-r,awk更厉害,至少以后你同事写出来后,思路”这是用什么写的?为什么我不能理解”不会出现在你的脑海里,或者你的同事如果他们不会正则表达式就可以说牛逼,这样我本文转载于:https://mp.weixin.qq.com/s/pG...abc?