开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么,
"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配
"notice": 匹配包含notice的字符串
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边
接着,说说 '*', '+',和 '?',
他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:
"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1}, 这里是一些例子:
"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
要点, '*', '+',和 '?'只管它前面那个字符.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
现在我们把一定几个字符放到小括号里,比如:
"a(bc)*": 匹配 a 后面跟0个或者一个"bc";
"a(bc){1,5}": 一个到5个 "bc."
还有一个字符 '│', 相当于OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a│b)*c": 匹配含有这样多个(包括0个)a或b,后面跟一个c
的字符串;
一个点('.')可以代表所有的单一字符,不包括"\n"
如果,要匹配包括"\n"在内的所有单个字符,怎么办?
对了,用'[\n.]'这种模式.
"a.[0-9]": 一个a加一个字符再加一个0到9的数字
"^.{3}$": 三个任意字符结尾 .
中括号括住的内容只匹配一个单一的字符
"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样);
"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文
"^[a-zA-Z]": 匹配以大小写字母开头的字符串
"[0-9]%": 匹配含有 形如 x% 的字符串
",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串
你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^'
-------------------------------------------------------------------------
^ 和 $ 分别用来匹配字符串的开始和结束
-------------------------------------------------------------------------
例1 ^<b> 开头 一定要有"<b>"字符串;
例2 </b>$ 结尾 一定要有"</b>" 的字符串;
例3 ^abc$ 以abc开头和以abc结尾的字符串,实际上是只有abc匹配
例4 abc 没符号就 匹配包含abc的字符串
-------------------------------------------------------------------------
* + 和 ? 用来表示一个字符可以出现的次数或者顺序. 他们分别表示
-------------------------------------------------------------------------
{0,} = * 例1 ab{0,} 匹配以a开头后面B出现O-N次( "a", "ab", "abb", "abbbbbbbbbbbbbbbbb", 无限...)
{1,} = + 例2 ab{1,} 匹配以a开头后面B出现1-N次( "ab", "abb", "abbbbbbbbbbbbbbbbb", 无限...)
{0,1}= ? 例3 ab{0,1} 匹配以a开头后面B出现O-1次( "a", "ab")
例4 a{0,1}b+$ 匹配以0个或者1个a 再加上一个b结尾的字符串. ( "b", "ab")
注(2种写法)
ab{0,}也可以写成 ab*
ab{1,}也可以写成 ab+
ab{0,1}也可以写成 ab?
a{0,1}b+$也可以写成 a?b+$
(1)1要点, '*' '+',和 '?'只管控制它前面那个字符出现次数.
2 {N,N} 几到几次 {0} O次
3{}这个内不能为负数
(2)次数是可以修改的
例5 ab{2} 要求a后面一定要跟两个b(一个也不能少)如 ("abb");
例6 ab{2,} 要求a后面一定要有两个或者两个以上b 如("abb", "abbbb", 等.);
例7 ab{3,5} 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
(3)后面跟多个字符用()
例8 a(bc)* 匹配 a 后面跟0个或者一个"bc"; 当然你也可以写成"a(bc){0,}"
例9 a(bc){1,5} 匹配1个到5个 "bc."
-------------------------------------------------------------------------
│ 相当于OR 用来表示 1个或者 多个或者
-------------------------------------------------------------------------
例1 A│B 匹配含有"A" 或者 "B" 的 字符串;
例2 (A│B)C 匹配含有 "AC" 或者 "BC"的字符串;
例3 (A│B)*C 匹配含有(包括0-1个)a或b,后面跟一个c
-------------------------------------------------------------------------
. 可以代表所有的单一字符
-------------------------------------------------------------------------
. 不包括"\n"空格 如果有空格就用 但空格加一字符[\n.] 多个空格+1字符 [\n\n\n\n\n\n.]
例1 a.[0-9] 一个a 加一个字符 再加一个0到9的数字
例2 ^.{3}$ 三个任意字符结尾
-------------------------------------------------------------------------
'[ab]' 中括号括住的内容只匹配一个单一的字符
-------------------------------------------------------------------------
例1 [ab] 匹配单个的 a 或者 b ( 和 "a│b" 一样);
例2 [a-d] 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文
例3 ^[a-zA-Z] 匹配以大小写字母开头的字符串
例4 [0-9]% 匹配含有 形如 x% 的字符串
例5 ,[a-zA-Z0-9]$ 匹配以逗号再加一个数字或字母结尾的字符串
例6 %[^a-zA-Z]% 匹配含有两个百分号里面有一个(非)字母的字符串.
你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^'
要点1:^[内容] ^在[]外开头,就表示以内容开头
要点2:[^内容] ^在[]里开头,就表示排除里面的内容(^非的意思)
要点3: 匹配含有这些字符的字符串. 在中括号里[*\+?{}.] 或者' 符号将失效 括号只匹配单一字符
要点4: []中含有']' 最好把它作为列表里的第一个字符(可能跟在'^'后面)
要点5: []中含有有'-' 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的'-'将有效.
-------------------------------------------------------------------------
\b 和 \B 1匹配一个单词右边界 2匹配非单词边界
-------------------------------------------------------------------------
例1 've\b': 可以匹配love里的ve而不匹配very里有ve
例2 'ov\B': 可以匹配love里的ov而不匹配ovry里有ov
-------------------------------------------------------------------------
\d 和 \D
-------------------------------------------------------------------------
例1 \d 匹配一个数字字符。等价于 [0-9]。
例2 \D 匹配一个非数字字符。等价于 [^0-9]。
-------------------------------------------------------------------------
\w 和 \W
-------------------------------------------------------------------------
例1 \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'
例2 \W 匹配包括下划线的任何非单词字符。等价于 '[^A-Za-z0-9_]'。
-------------------------------------------------------------------------
匹配非打印字符
-------------------------------------------------------------------------
字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
-------------------------------------------------------------------------
例子
-------------------------------------------------------------------------
匹配首尾空白字符的正则表达式:^s*|s*$
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 匹配形式如 0511-4405222 或 021-87888822 920-209 642-964
匹配腾讯qq号:[1-9][0-9]{4,} 1+后面四为的数字开始,也就是 10000
匹配中国邮政编码:[1-9]d{5}(?!d) 中国邮政编码为6位数字
匹配身份证:d{15}|d{18}评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+ 评注:提取ip地址时有用
-------------------------------------------
^ $ //开始到结尾
+ //连续1-N个 (连在一起的)(也就是-{1,} )
-? //表示负和非负 (也就是-{0,1} )
[0-9]* //表示前面的位数0-N(也就是[0-9]{0,} )
.? //表示有点或者无点
[^ //非里面的内容
[a-z] //匹配所有的小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的字母
[0-9] //匹配所有的数字 0-9的整数
[0-9.-] //匹配所有的数字,句号和减号
------------------------------------------------
^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 //举例子连在一起 aA0_A001a_
^[0-9]+$ //所有的正数 (也可以说是非负整数) //举例子 345500687008099900999
^-?[0-9]+$ //所有的整数 (包括 负整数和整数) //举例子 -43443 或者 43443
^-?[0-9]*.?[0-9]*$ //所有的小数 (包括正 副小数 小数点前后的位数无限长) //举例子 -10.00 或者100000.0000
如果没小数点 后面肯定没数字, 所以前面加一个.? 来判断是否有小数点,按道理说可以不需要.?是多余的
因为这个是专门判断小数的,如果没小数点了,还叫付数吗
[^a-z] //除了小写字母以外的所有字符
[^/^] //除了"/"和"^"字符之外的所有字符
[^"'] //除了双引号(")和单引号(')之外的所有字符
相关推荐
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串...在实际应用中,结合实例实践是掌握正则表达式的关键。希望这个30分钟的入门教程能为你的学习之路打开一扇窗,让你在处理文本时更加得心应手。
正则表达式(Regular Expression, abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是,简单的正则表达式对于一些高级运用,功能远远不够。若要进行...
本文通过详细的实例代码向读者展示如何使用Python的正则表达式进行参数替换,并简要介绍了正则表达式的相关概念和用法。通过这些知识点,读者可以更加深入理解正则表达式在字符串处理中的强大功能,并能够应用到实际...
本文着重讲解了如何使用Python正则表达式从字符串中提取数字,包括整数、小数等不同形式的数字,并提供了详细的思路分析和实例代码。 首先,我们来理解正则表达式中的基本概念和元素: - ^:表示匹配字符串的开始...
Everything支持正则表达式,或者说,支持一些简单的正则表达式。但对大多数用户而言,这已经足够了!Everything支持的正则表达式有: | () ? * + . [] [^] ^ $ {m,n} rex网友的翻译。如果你不了解什么是正则表达式...
- 正则表达式验证:确保通过正则表达式匹配到的内容是正确的,以避免返回不期望的结果或错误的响应。 - 获取同级文件夹中文件的路径:若要访问程序同级目录下的文件夹中的文件,则需要使用正确的相对路径。 - ...
- `replace()`: 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 4. **函数应用** - `call()`: 改变函数体内 this 的指向并调用该函数。 - `apply()`: 和 `call()` 类似,但接受一个...
第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52...
`socket`模块用于进行网络通信,`re`模块用于正则表达式操作,`sys`模块用于访问与Python解释器和环境有关的变量和函数,而`smtplib`模块则是用于发送电子邮件。 在脚本中,`mail`函数通过`smtplib`模块实现邮件...
MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计...正则表达式模式匹配 94 4.3.3 总结 96 4.4 深入SELECT的查询功能 96 4.4.1 列和表的别名 96 4.4.1.1列的别名 96 4.4.1.2 在...
MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计...正则表达式模式匹配 94 4.3.3 总结 96 4.4 深入SELECT的查询功能 96 4.4.1 列和表的别名 96 4.4.1.1列的别名 96 4.4.1.2 在...