正则表达式

5-正则匹配获取数据

故事扮演 提交于 2020-03-09 22:53:28
4,正则匹配-数据获取 https://docs.python.org/zh-cn/3/library/re.html 正则表达式是对字符串操作的一种逻辑公式,事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符”,这个“规则字符” 来表达对字符的一种过滤逻辑 常用的匹配模式 \w 匹配字母数字及下划线 \W 匹配f非字母数字下划线 \s 匹配任意空白字符,等价于[\t\n\r\f] \S 匹配任意非空字符 \d 匹配任意数字 \D 匹配任意非数字 \A 匹配字符串开始 \Z 匹配字符串结束,如果存在换行,只匹配换行前的结束字符串 \z 匹配字符串结束 \G 匹配最后匹配完成的位置 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开头 $ 匹配字符串的末尾 . 匹配任意字符,除了换行符,re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 [....] 用来表示一组字符,单独列出:[amk]匹配a,m或k [^...] 不在[]中的字符:[^abc]匹配除了a,b,c之外的字符 * 匹配0个或多个的表达式 + 匹配1个或者多个的表达式 ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 {n} 精确匹配n前面的表示 {m,m} 匹配n到m次由前面的正则表达式定义片段,贪婪模式 a|b 匹配a或者b () 匹配括号内的表达式,也表示一个组

python/pandas 正则表达式 re模块

风格不统一 提交于 2020-03-09 17:44:56
目录 正则解说 中文字符集 re模块常用方法 1、正则解说 数量词的贪婪模式与非贪婪模式   正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。 一般字符、字符集和转义字符 一般字符 完全匹配字符 abc abc \ 转义字符 \. . . 匹配除换行符\n以外的所有字符 . q, 1, +, ...... [] 匹配字符集中任意字符 [abc] a, b, c \s 匹配空白字符,即[\n\t\f\r...] a\sb a b, a b, ...... \S 匹配非空白字符 a\Sb ab, a4b, asb, ...... \w 匹配单词字符,即[a-zA-Z0-9] a\wc abc, a8c, ...... \W 匹配非单词字符,即[^a-zA-Z0-9] a\Wc a-c, a?c, ...... \d 匹配数字 a\dc a3c, ...... \D 匹配非数字 a\Dc adc, a-c, ...... 限定匹配次数 * 匹配前一个字符0到无限次 ab*c ac, abc, abbc, ...... +

leetcode-10 正则表达式的匹配

亡梦爱人 提交于 2020-03-09 17:41:53
java代码 class Solution { public boolean isMatch ( String str , String pattern ) { if ( str == null || pattern == null ) { return true ; } int strIndex = 0 ; int patternIndex = 0 ; return matchCore ( str . toCharArray ( ) , strIndex , pattern . toCharArray ( ) , patternIndex ) ; } public boolean matchCore ( char [ ] str , int strIndex , char [ ] pattern , int patternIndex ) { //如果字符串与模式串同时访问完毕 if ( strIndex == str . length && patternIndex == pattern . length ) { return true ; } //如果模式串访问完毕而字符串未访问完 if ( pattern . length == patternIndex && str . length != strIndex ) { return false ; } /

python之正则表达式

六眼飞鱼酱① 提交于 2020-03-09 16:45:52
正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。 正则表达式的大致匹配过程是: 1.依次拿出表达式和文本中的字符比较, 2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 3.如果表达式中有量词或边界,这个过程会稍微有一些不同。 符号 说明 实例 . 表示任意字符,如果说指定了 DOTALL 的标识,就表示包括新行在内的所有字符。 'abc' >>>'a.c' >>>结果为:'abc' ^ 表示字符串开头。 'abc' >>>'^abc' >>>结果为:'abc' $ 表示字符串结尾。 'abc' >>>'abc$' >>>结果为:'abc' *, +, ? '*'表示匹配前一个字符重复 0 次到无限次,'+'表示匹配前一个字符重复 1次到无限次,'?'表示匹配前一个字符重复 0 次到1次 'abcccd' >>>'abc*' >>>结果为:'abccc' 'abcccd' >>>'abc+' >>>结果为:'abccc' 'abcccd' >>>

正则表达式总结

≯℡__Kan透↙ 提交于 2020-03-09 16:45:35
正则表达式 定义: 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。 在线正则测试工具: http://tool.oschina.net/regex/ 总结1: 1.由数字、26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非正整数(负整数 + 0): ^((-/d+)|(0+))$ 5. 负整数 : ^-[0-9]*[1-9][0-9]*$ 6.整数: ^-?/d+$ 7.非负浮点数(正浮点数 + 0): ^/d+(/./d+)?$ 8.正浮点数 : ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$ 9. 非正浮点数(负浮点数 + 0): ^((-/d+(/./d+)?)|(0+(/.0+)?))$ 10.负浮点数 : ^(-(([0-9]+/.[0-9]*[1-9][0-9

python学习之正则表达式

我的梦境 提交于 2020-03-09 16:43:52
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.2. 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。 1.3. 反斜杠的困扰 与大多数编程语言相同,正则表达式里使用"

Python基础知识点总结【面试必过】

时光总嘲笑我的痴心妄想 提交于 2020-03-09 15:01:37
数据类型: 数字类型(int、float、bool(True or False)、complex) 字符串(str) —— ' ' or " " 相关操作:通过下标获取内容,对字符串进行多步操作前一般需要进行切片[:],保证原字符串不会随着操作变化。(注意:起始坐标和结束坐标都看省略,步进根据自己的需要与否决定是否设置,有时候很简单的解决某些问题) 注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 常用方法: capitalize 使指定字符串首字母大写 center(width, fillchar) 将原字符串变成指定的长度并且内容居中,剩下的部分使用指定的字符填充 rjust(width, fillchar) 将原字符串变成指定的长度并且内容右对齐,剩下的部分使用指定的字符填充 字符串1.join(字符串2) 在字符串2中的每个字符之间插入一个字符串1 列表(list)—— [1,2,3] 相关操作:列表的操作与字符串的操作基本相同,不过需要注意的是字符串的操作对象是单个字符,列表的操作对象是列表中的元素。 常用方法: append 在列表的末尾添加一个元素 insert

Python正则表达式指南

早过忘川 提交于 2020-03-08 14:28:47
  正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下python中的正则表达式是怎么使用的。  一、元字符 (参见 python 模块 re 文档)   . 匹配任意字符(不包括换行符)   ^ 匹配开始位置,多行模式下匹配每一行的开始   $ 匹配结束位置,多行模式下匹配每一行的结束   * 匹配前一个元字符0到多次   + 匹配前一个元字符1到多次   ? 匹配前一个元字符0到1次   {m,n} 匹配前一个元字符m到n次   \\ 转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\\.只能匹配.,不能再匹配任意字符   [] 字符集,一个字符的集合,可匹配其中任意一个字符   | 逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b   (...) 分组,默认为捕获,即被分组的内容可以被单独取出,默认每个分组有个索引,从 1 开始,按照"("的顺序决定索引值   (?iLmsux) 分组中可以设置模式,iLmsux之中的每个字符代表一个模式,用法参见 模式 I   (?:...)

正则表达式

笑着哭i 提交于 2020-03-08 13:11:04
正则表达式 搜索模式可用于文本搜索和文本替换。 var patt = /w3cschool/i /w3cschool/i 是一个正则表达式。 w3cschool 是一个模式 (用于检索)。 i 是一个修饰符 (搜索不区分大小写)。 search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置。   search() 方法使用正则表达式 var str = "Visit w3cschool"; var n = str.search(/w3cschool/i); 输出为6 不分大小写   search() 方法使用字符串 var str = "Visit w3cschool!"; var n = str.search( "w3cschool"); 输出为6 replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子字符串。    replace () 方法使用正则表达式 var str = "Visit Microsoft!"; var res = str.replace(/microsoft/i, "w3cschool"); 输出为Visit w3cschool!    replace () 方法使用字符串 var str = "Visit Microsoft!"; var res =

leetcode8:字符串转换整数 (atoi)

故事扮演 提交于 2020-03-08 10:11:43
看到大神,用正则式1行写出,再看看自己的if语句连篇还没做出来,很是受挫。 于是肝了三天,学会了正则表达式。因为不太聪明和要搞清一些细节的东西,才花了那么长时间。 其实入门还是比较容易的。 我的见解: 不去处理字符串前面的空格,直接用正则表达式: ^\s*([+-]?\d+) 其中有以下两点是 初学者 要注意的: 里面的小括号 () 有什么用? () 是捕获组,因为我们实际不需要空格,需要获取剩余的对象。 group(1) 就是我们要的东西,整个正则表达式是 group(0) 。其实我们也 可以不要() ,连带着空格,因为后面的 int() 函数会处理带前后空格的字符串。 + 是元字符,要使用它的字面意思,前面不是要加 \ 转义吗? 大多情况下是要加 \ 的。但在 [] 中,前面是 可以不加 \ 的, 加上去 \ + 当然也没错 。 在 [] 中 要使用字面意思匹配, \ , ] 必须加反斜杠 , - , ^ 分别与用作 区间 (在中间)和 取非 (在前面)功能相冲突时要加反斜杠,其他的时候可以不加,其余字符都可以不加反斜杠。 找到相应的字符串,之后就不必我说了吧。 推荐: 一个学习网址: learn-regex 一个在线练习的网站: regex101 你看花花绿绿的多好看🤣。 测试这道题的,可以用我测试时做的样例: https://regex101.com/r/75rJ8K/6