正则表达式

爬虫之正则表达式

痴心易碎 提交于 2019-12-21 10:11:56
用正则表达式提取数据 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 单字符匹配,多字符匹配,匹配分组, (三大类) 对文本进行匹配查找的一系列方法 😃 match 方法:从起始位置开始查找,一次匹配 😃 search 方法:从任何位置开始查找,一次匹配 😃 findall 方法:全部匹配,返回列表 😃 finditer 方法:全部匹配,返回迭代器 😃 split 方法:分割字符串,返回列表 😃 sub 方法:替换 这些方法要牢记哦! 数据提取中常用的操作 1.抓取标签间的内容 案例:抓取 title 标签间的内容 from urllib import request import re import chardet def down(url): head = {} #写入 User Agent 信息 head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' #创建 Request 对象 req = request.Request(url, headers=head) response =

vue 富文本编辑器提取纯文字

女生的网名这么多〃 提交于 2019-12-21 04:46:34
两种方法 一种是在标签中使用 v-html="" <p v-html="ruleForm.content"></p> 二是在过滤器中使用正则表达式 filters: { filtersText(val) { // 要判断一下,如果是空就返回空字符串,不然会报错 if (val != null && val != '') { var reg = /[\u4e00-\u9fa5]/g var names = val.match(reg) val = names.join('') return val } else return '' } } // 在文本中使用 // {{ruleForm.content | filtersText}} 来源: CSDN 作者: 神探小白牙 链接: https://blog.csdn.net/anny_mei/article/details/103616694

LogStash filter介绍(九)

荒凉一梦 提交于 2019-12-21 03:48:12
LogStash plugins-filters-grok介绍 官方文档: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html 常用于对日志的拆分,如apache日志 grok利用正则表达式进行匹配,拆分日志。它提供一些常用的预定义的正则表达式名称,用于直接匹配。 预定义文件路径 /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns grok-patterns文件包含apache预定义。 logstash所有预定义的可以通过 如下地址查看 https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns 自己写的规则可以通过如下地址,做debug测试 http://grokdebug.herokuapp.com/ grok插件使用 1)标准输入、标准输出 input { stdin {} } filter { grok { match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %

常用正则表达式

孤者浪人 提交于 2019-12-21 01:15:48
正则式写法规则 正则表达式中有很多上述的具有特别意义的字符。首先是下列字符。 [ ] 范围描述符。[a-z]表示从a到z之间的任意一个。 \w 英文字母和数字。即[0-9 A-Z a-z]。 \W 非英文字母和数字 \s 空字符,即[\t\n\r\f]。 \S 非空字符。 \d 数字,即[0-9]。 \D 非数字。 \b 词边界字符(在范围描述符外部时) \B 非词边界字符 \b 退格符(0x08)(在范围描述符内部时) * 前面元素出现0次以上 + 前面元素出现1次以上 {m,n} 前面元素最少出现m次,最多出现n次 ? 前面元素出现0次或1次 | 选择 ( ) 群组 其他字符 该字符本身 常用正则式 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式: http://(/ [\w-]+\.)+[

正则表达式

流过昼夜 提交于 2019-12-20 11:23:51
一、 什么是正则表达式 1.1 正则表达式简介 ​ 所谓正则表达式,实际上就是用来描述某些字符串匹配规则的工具,简单地说,正则表达式是对文本进行过滤的工具。而正则表达式之所以拥有过滤文本的功能,是因为它定义了一系列的元字符,通过元字符配合其他普通字符来表达出一种规则(匹配规则),只有符合该规则的文本才能保留下来。由于正则表达式语法简练、功能强大,得到了许多变成语言的支持,包括Java、C++、Perl以及Shell。 ​ 比如ls .txt。通常情况下,我们称“*”为通配符。当shell遇到该符号时,会将其解释为“任意的字符串”。与通配符类似,正则表达式也是用来匹配文本的,与之相比,正则表达式能够更加准确的描述用户的需求。 ​ 正则表达式在Unix和Linux中得到广泛的应用,常见支持正则表达式的Unix工具如下: ​ grep命令族:用于匹配文本行 ​ sed流编辑器:用于编辑文本 ​ awk:用于处理字符串的语言 ​ 掌握正则表达式,可以更好地利用这些工具。 解释: ​ 字符 字母和数字 ​ 字符串 word 词 ​ 文本行 文件中的行 1.2 如何学习正则表达式 ​ 1)重点在于理解元字符 ​ 元字符在正则表达式中占核心地位,正则表达式最终是由元字符表达出来。理解和掌握元字符的涵义,才能达到灵活运用的地步。 ​ 2)掌握好正则表达式的语法 ​ 正则表达式之所以简练

正则表达式

馋奶兔 提交于 2019-12-20 07:30:32
Character classes .        匹配任意字符除了换行符              any character except newline \w \d \s      匹配单词、数字、空白               word, digit, whitespace \W \D \S     不匹配单词、数字、空白              not word, digit, whitespace [abc]       匹配其中的一个                any of a, b, or c [^abc]      不匹配其中的一个                not a, b, or c [a-g]       匹配其中的一个                character between a & g Anchors ^abc$       开始字符串或结束字符串             start / end of the string \b         单词边界                   word boundary Escaped characters \. \* \\       特殊字符串                   escaped special characters \t \n \r       制表符 换行符

正则表达式匹配URL

故事扮演 提交于 2019-12-20 07:25:07
正则表达式: var match = /^((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/; /* 注:(1)、如需允许其他联接方式,可以修改“(ht|f)tps?”部分,在“?”后面跟上符号“|”,然后加上您需要的联接方式,多个时用符号“|”分隔)。(2)、如需允许URL参数包含其它字符,可以修改“[\w\-\.,@?^=%&:\/~\+#]”,以设置您需要的参数。*/ 匹配: (1)、直接匹配域名地址: var matchString = 'https://i.cnblogs.com'; console.log(match.test(matchString)); // ==> true var matchString = 'https://i.cnblogs.com/'; console.log(match.test(matchString)); // ==> true var matchString = 'https://i.cnblogs.com//'; // ==> 不允许非域名或参数以外的地方出现双“/”; console.log(match.test(matchString)); // ==> false (2)、匹配链接含(*

mysql正则表达式

给你一囗甜甜゛ 提交于 2019-12-20 05:53:06
用正则表达式进行搜索 正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。 基本字符匹配 REGEXP关键字来匹配正则 SELECT name FROM tab1 WHERE name REGEXP 'abc'; //REGEXP后所跟的东西作为正则表达式 '.'是以匹配任意一个字符 'a|b'可以匹配了两个a或者 '[abc]'可以匹配abc中的某一个字符 '[^a]'匹配除a以外的数据 '[1-9]'匹配1到9中的任何一个数字,[a-z]和[A-Z]同[1-9] '\'是相当于转义字符 SELECT name FROM tab1 WHERE name REGEXP 'a|b'; 匹配字符类 [:alnum:]  任意字母和数字(同[a-zA-Z0-9]) [:alpha:]  任意字符(同[a-zA-Z]) [:blank:]  空格和制表(同[\t]) [:cntrl:]  ASCII控制字符(ASCII 0到31和127) [:digit:]  任意数字(同[0-9]) [:graph:]  与[:print:]相同,但不包括空格 [:lower:]  任意小写字母(同[a-z]) [:print:]  任意可打印字符 [:punct:]

实体识别 | 正则表达式:提取身份证号

走远了吗. 提交于 2019-12-20 02:41:24
提取身份证号: import re text = "418193200001016666" IDCards_pattern = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$' IDs = re.findall(IDCards_pattern, text, flags=0) print(IDs) 打印结果: [('140581199509030032', '09', '03')] 附: 正则表达式的书写语法 1、^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串) 2、$ 表示匹配字符串的结束位置 3、* 表示匹配 零次到多次 4、+ 表示匹配 一次到多次 (至少有一次) 5、? 表示匹配零次或一次 6、. 表示匹配单个字符 7、| 表示为或者,两项中取一项 8、( ) 小括号表示匹配括号中全部字符 9、[ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z] 10、{ } 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m 11、\ 转义字符 如上基本符号匹配都需要转义字符 如 \* 表示匹配*号 12、\w 表示英文字母和数字 \W 非字母和数字

ECMAScript6--正则的扩展

蓝咒 提交于 2019-12-20 01:38:02
RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况 第一种: 参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 var regex = new RegExp ( 'xyz' , 'i' ) ; // 等价于 var regex = /xyz/i ; 第二种: 参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。 但是不允许使用第二个参数添加修饰符,否则会报错 var regex = new RegExp ( /xyz/i ) ; // 等价于 var regex = /xyz/i ; ES6中改变了这种行为,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符,而且返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符. new RegExp ( /abc/ig , 'i' ) . flags // "i" //String.prototype.match 调用 RegExp.prototype[Symbol.match] ///String.prototype.replace 调用 RegExp.prototype[Symbol.replace] //String.prototype.search 调用 RegExp.prototype[Symbol.search] //String