技术标签: 积累
正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。
推荐时间比较充裕的同学仔细阅读:https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 配合:https://regex101.com/ 食用更佳
普通字符 | 匹配自身 | abc | abc |
. | 匹配任意除换行符"\n"外的字符(在DOTALL模式中也能匹配换行符 | a.c | abc |
\ | 转义字符,使后一个字符改变原来的意思
|
a\.c a\\c |
a.c a\c |
* | 匹配前一个字符0或多次 | abc* |
ab abccc |
+ | 匹配前一个字符1次或无限次 | abc+ | abc abccc |
? | 匹配一个字符0次或1次 | abc? | ab abc |
^ | 匹配字符串开头。在多行模式中匹配每一行的开头 | ^abc | abc |
$ | 匹配字符串末尾,在多行模式中匹配每一行的末尾 | abc$ | abc |
| | 或。匹配|左右表达式任意一个,从左到右匹配,如果|没有包括在()中,则它的范围是整个正则表达式 | abc|def | abc def |
{ } | {m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次 | ab{1,2}c | abc abbc |
[ ] | 字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。[^abc]表示取反,即非abc。 所有特殊字符在字符集中都失去其原有的特殊含义。用\反斜杠转义恢复特殊字符的特殊含义。 |
a[bcd]e | abe ace ade |
() | 被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的左括号“(”,编号+1. 分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效。 |
(abc){2}a(123|456)c | abcabc a456c |
\d | 数字:[0-9] | a\bc | a1c |
\D | 非数字:[^\d] | a\Dc | abc |
\s | 匹配任何空白字符:[<空格>\t\r\n\f\v] | a\sc | a c |
\S | 非空白字符:[^\s] | a\Sc | abc |
\w | 匹配包括下划线在内的任何字字符:[A-Za-z0-9_] | a\wc | abc |
\W | 匹配非字母字符,即匹配特殊字符 | a\Wc | a c |
\A | 仅匹配字符串开头,同^ | \Aabc | abc |
\Z | 仅匹配字符串结尾,同$ | abc\Z | abc |
\b | 匹配\w和\W之间,即匹配单词边界匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 | \babc\b | 空格abc空格 |
\B | [^\b] | a\Bbc | abc |
说明:re.compile(pattern[, flags]) 编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)
API和usage:https://docs.python.org/2/library/re.html#re.compile
import
re
tt
=
"Tina is a good girl, she is cool, clever, and so on..."
rr
=
re.
compile
(r
'\w*oo\w*'
)
print
(rr.findall(tt))
#查找所有包含'oo'的单词
|
说明:re.match(pattern, string, flags=0) 决定RE是否在字符串刚开始的位置匹配。这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$'
API和usage:https://docs.python.org/2/library/re.html#re.RegexObject.match
print
(re.match(
'com'
,
'comwww.runcomoob'
).group())
print
(re.match(
'com'
,
'Comwww.runcomoob'
,re.I).group())
|
print
(re.search(
'\dcom'
,
'www.4comrunoob.5com'
).group())
#只返回第一个匹配
|
*注:match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:
a. group()返回re整体匹配的字符串,
b. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常
c.groups()groups() 方法返回一个包含正则表达式中所有小组字符串的元组,从 1 到所含的小组号,通常groups()不需要参数,返回一个元组,元组中的元就是正则表达式中定义的组。
说明:re.findall(pattern, string, flags=0) re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
讲解:http://www.runoob.com/python/python-reg-expressions.html
https://www.zhihu.com/question/29764272/answer/45597454API和usage:https://docs.python.org/2/library/re.html#re.findall
p
=
re.
compile
(r
'\d+'
)
print
(p.findall(
'o1n2m3k4'
))
|
print
(re.split(
'\d+'
,
'one1two2three3four4five5'
))
|
其他方法可以参考:https://docs.python.org/2/library/re.html#module-re (官方文档)
匹配IP地址的正则表达式 res
=
/
(\d
+
)\.(\d
+
)\.(\d
+
)\.(\d
+
)
/
g
匹配空行的正则表达式:res
=
\n[\s| ]
*
\r
匹配HTML标记的正则表达式:res
=
/
<(.
*
)>.
*
<\
/
\
1
>|<(.
*
) \
/
>
/
匹配首尾空格的正则表达式:res
=
(^\s
*
)|(\s
*
$)
匹配中文字符的正则表达式: res
=
[\u4e00
-
\u9fa5]
#python中需要转换为unicode
匹配双字节字符(包括汉字在内):res
=
[^\x00
-
\xff]
user_phone
=
r
"((?:13[0-9]|14[579]|15[0-3,5-9]|17[0135678]|18[0-9])\d{8})"
user_name
=
r"
"+u"
([\u4e00
-
\u9fa5\·]{
2
,
3
})"
user_id_18
=
r
"([1-9]\d{5}(?:1[9,8]\d{2}|20[0,1]\d)(?:0[1-9]|1[0-2])(?:0[1-9]|1[0-9]|2[0-9]|3[0,1])\d{3}[\dxX])"
user_id_15
=
r
"([1-9]\d{7}(?:0[1-9]|1[0-2])(?:0[1-9]|1[0-9]|2[0-9]|3[0,1])\d{2}[\dxX])"
car_id
=
r"
"+u"
([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]{
1
}[A
-
Z]{
1
}[A
-
Z0
-
9
]{
4
}[A
-
Z0
-
9
挂学警港澳]{
1
})"
email
=
r
"([a-z_0-9.-]{2,64}@[a-z0-9-]{2,200}\.[a-z]{2,6})"
address
=
r"
"+u"
([\u4e00
-
\u9fa5\·]{
6
,
20
})"
Python中针对
unicode
正则写法:
res
=
ur
"[\u4e00-\u9fa5]"
|
正则表达式30分钟入门教程(推荐) |
https://deerchao.net/tutorials/regex/regex.htm |
python中的正则表达式(re模块) |
https://www.cnblogs.com/tina-python/p/5508402.html |
Python 正则表达式 |
https://thief.one/2017/10/30/1/ |
正则测试网页 | https://regex101.com/ |
之前一直对于这个神奇的素性判定方法感到痴迷而又没有时间去了解。借着学习《信息安全数学基础》将素性这一判定方法学习一遍。首先证明一下费马小定理。 若p为素数,且gcd(a, p)=1, 则有 a^(p-1) = 1 (mod p) 基于以下定理 若(a, p)=1,{x| (x, p)=1}为模p下的一个完全剩余系,则{ax| (x, p)=1}也为模p下的一...
1. 登入网址(https://www.google.cn/chrome/)或者自行百度来下载谷歌浏览器安装包或者输入网址直接下载: 32位: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb 64位: wget https://dl.google.com/..._乌版图 谷歌浏览器安装
我在以前的文章中已经说过,编写具有量产品质的PowerShell函数需要考虑三个要素:输入、输出和错误。我在上一篇文章中讨论了程序的参数(输入部分)。现在我们来研究一下无疑是最重要的要素---错误处理。简而言之,如果你不学习处理错误,你就无法做出具有量产品质的函数。如果不考虑错误状态,当出现问题的时候,你的用户将会面临一个非常糟糕的处境。错误管理可以分为三个部分:监测、错误的详细信息以及处理。让我..._windows powershell 用不了 javah
VGG16输入224*224*3的图片,经过的卷积核大小为3x3x3,stride=1,padding=1,pooling为采用2x2的max pooling方式:1、输入224x224x3的图片,经过64个卷积核的两次卷积后,采用一次pooling。经过第一次卷积后,c1有(3x3x3)个可训练参数2、之后又经过两次128的卷积核卷积之后,采用一次pooling3..._vgg-16图像识别matlab
u.indexOf(" ") 判断字符串u的中间有没有空字符,没有返回-1,有就返回几个var width = window.innerWidth 获取浏览器宽度var height = window.innerHeight 获取浏览器高度$(window).resize(function(){}); 当浏览器大小变动时执行typeof(cc) == "undefined"...
第二日:科班秀才【秀才仕途】Web前端工程师是一个特别的岗位,只存在于互联网领域。最近几年随着互联网产业的火爆,对前端工程师的需求量暴增,兵源几近枯竭。各大公司技术掌门一定都有过类似的苦恼:“招一个靠谱的前端工程师、难于上青天”。我想,一部分原因是,当前不少入道的前端工程师大都是转行而来,毕竟,正儿八经的学校里也不会教这玩意,觉得“切页面”有啥好教的,甚至不觉得html/css是一门语...
4709: [Jsoi2011]柠檬Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 229 Solved: 100[Submit][Status][Discuss]DescriptionFlute 很喜欢柠檬。它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬。贝壳一共有 N (1 ≤ N ≤ 100,000) 只_决策单调性单调栈
第四天 2021-3-6 每日刷两题刷题模块:数组 - 简单难度一、STL:unique()函数 unique函数属于STL中比较常用函数,它的功能是元素去重。 即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了(详细情况,下面会讲)。 由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。 返回值是去重之后的尾地址,由于返回的是容器末尾,所以如果想得到去重后的size,需要减去_初始值一定要定义成理论上的最小最大值
前言因今年公司新产品线较多,为了降低耦合,达到业务分离、重用,提高内部开发效率的目的,采用了基于服务组件、前后端分离的架构体系。与之前传统单应用架构相比,系统部署、配置更加复杂,为了能够频繁地将软件的最新版本,及时、持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署。环境准备操作系统:Windows10Jav...
关键字: sarsar默认在linux下没有安装,需要我们手工安装,一般建议源码方式安装,下载类似sysstat-6.1.3.tar.gz然后configure make make install即可使用.sar 命令行的常用格式:sar [options] [-A] [-o file] t [n]在命令行中,n 和t 两个参数组合起来定义采样..._sar提升系统
Insus.NET分享一个案例网站程序。程序中95%的功能添加与设置在后台管理平台进行,剩余的5%就是前台网页的自定义设计。程序是使用.NET Framework 4.0 + ASP.NET + MS SQL Server 2008 R2 + VB.NET进行开发。功能与特色:文章编辑器使用:CuteEditor 。如果你在运行时,出现license的问题时,如下图:可以从官网上下载,然后覆盖BI...
喜欢破解的网友可以看看!~ 详细功能请下载试用!~ \https://pan.baidu.com/s/1gfzBiq3 转载于:https://blog.51cto.com/haiyang457/1869956